私は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をテストすると、そこに走った。誰かが私を助けてくれたら、それはすごいよね!!
APIゲートウェイコンソールでtest-invokeを使用してAPIメソッドを実行し、それが返す本体をポストできますか。 –