1

私はapiを配備し、アンドロイドにsdkをインポートしました。私は単純なGETメソッドを実行しようとしました。私がuserNameを入力したところで、それは私にユーザーのlastNameを返します。どのようにアンドロイドにawsのAPIゲートウェイを実装するには?

ラムダ関数(バックエンド関数)が呼び出されているので、接続できますが、出力を取得できません。ここで

は私のクラスである:私はここAPIゲートウェイから生成されたSDKに

public class SampleGet extends AppCompatActivity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_log_in); 

     gatewayButton = (Button) findViewById(R.id.cognito_gatewayButton); 
     gatewayButton.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       gateWayAsyncTask gateWayAsyncTask = new gateWayAsyncTask(); 
       gateWayAsyncTask.execute(); 

      } 
     }); 
    } 

    class gateWayAsyncTask extends AsyncTask<Void, Void, Void> 
    { 
     private String userName; 
     @Override 
     protected Void doInBackground(Void... params) 
     { 
      //gateway 
      creatingUser = clientFactory.build(MyUserClient.class); 
      userName = creatingUser.rootGet("SampleUserName").getLastName; 
      return null; 
     } 
     @Override 
     public void onPostExecute(Void var) 
     { 
      Log.d("gateway","gateway succeded!"); 
      if(userName == null) 
      { 
       Log.d("gateway","username is null"); 
      } 
      else if(userName.equals("")) 
      { 
       Log.d("gateway","username is empty"); 
      } 
      else 
      { 
       Log.d("gateway",userName); 
      } 

     } 
    } 

は、クライアントクラスである:ここで

@com.amazonaws.mobileconnectors.apigateway.annotation.Service(endpoint = "https://ow2zhiry2b.execute-api.us-west-2.amazonaws.com/test5") 

public interface MyUserClient { 


    /** 
    * A generic invoker to invoke any API Gateway endpoint. 
    * @param request 
    * @return ApiResponse 
    */ 
    com.amazonaws.mobileconnectors.apigateway.ApiResponse execute(com.amazonaws.mobileconnectors.apigateway.ApiRequest request); 

    /** 
    * 
    * 
    * @param username 
    * @return AndroidOutput 
    */ 
    @com.amazonaws.mobileconnectors.apigateway.annotation.Operation(path = "/", method = "GET") 
    AndroidOutput rootGet(
      @com.amazonaws.mobileconnectors.apigateway.annotation.Parameter(name = "username", location = "query") 
      String username); 

} 

も生成されたAndroidOuputクラスです:

public class AndroidOutput { 
    @com.google.gson.annotations.SerializedName("items") 
    private String items = null; 

    /** 
    * Gets items 
    * 
    * @return items 
    **/ 
    public String getItems() { 
     return items; 
    } 

    /** 
    * Sets the value of items. 
    * 
    * @param items the new value 
    */ 
    public void setItems(String items) { 
     this.items = items; 
    } 

} 

ログが出るのはusername is nullなので、理由はわかりません。私はクラウドウォッチをチェックして、実際にバックエンドのラムダ機能が動作しています。私がゲートウェイのapiをテストすると、そこに走った。誰かが私を助けてくれたら、それはすごいよね!!

+0

APIゲートウェイコンソールでtest-invokeを使用してAPIメソッドを実行し、それが返す本体をポストできますか。 –

答えて

0

AWS Gateway for Androidを使用したことがありますか?

+0

私はすべてのawsサービスのみを使用する必要はありません。しかし、awsチュートリアルのチュートリアルを完了しましたが、どれもそれを動作させるためにアンドロイドのクライアント側で何をすべきかを示していません。 –

関連する問題