поэтому у меня есть эта функция лямбда, которая просто вводит имя пользователя в качестве входных данных и переходит к dynamoDB и захватывает меня в этой таблице со всеми ее атрибутами и записывает ее. Он отлично работает, когда я тестирую лямбду. Но, когда я вызываю метод GET через sdk, он не работает, и я не понимаю, почему?Как вызвать метод GET в android с помощью aws api gateway?
здесь эта функция в лямбда.
AWS.config.update(dynamoDBConfiguration);
var dynamodb = new AWS.DynamoDB.DocumentClient();
exports.handler = function(event, context, callback)
{
console.log('entered exports handler');
console.log(JSON.stringify(event, null, ' '));
var userTableName = "usersTable";
var params = {
TableName : userTableName,
Key: {
"username": event.username
}
// AttributesToGet: [
// 'STRING_VALUE',
// /* more items */
// ],
};
dynamodb.get(params, function(err, data)
{ if (err) {
console.log(err);
callback(err);
} else {
console.log('great success: %j',data);
callback(null, data);
}
});
};
Теперь им пытаются проверить эту функцию в API Getway так что я могу позже развернуть SDK, но им, имеющие огромные проблемы, выясняя это и надеюсь, что вы, ребята, можете помочь мне в то, что им не хватает!
Мой метод ответа
следуют моей выходной модели
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"username": {"type":"string"}
},
"title": "Output"
}
И вот результат, который я получаю, когда я тестирую в Лямбда (так хорошо работает).
{
"Item": {
"experience": "0",
"displayName": "Archer",
"profileImageRef": "default",
"folders": {
"My Cards": {
"cards": {},
"name": "My Cards"
}
},
"birthdate": "1/1/1990",
"lastName": "Farooqui",
"username": "Archer",
"email": "[email protected]",
"firstName": "Qamar"
}
}
В андроиде, вот мой sdk, который я сгенерировал для установки в мою андроид-студию.
MyUserClient SDK
@com.amazonaws.mobileconnectors.apigateway.annotation.Service(endpoint = "https://ow2zhiry2b.execute-api.us-west-2.amazonaws.com/awsTest")
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 Output
*/
@com.amazonaws.mobileconnectors.apigateway.annotation.Operation(path = "/", method = "GET")
Output rootGet(
@com.amazonaws.mobileconnectors.apigateway.annotation.Parameter(name = "username", location = "query")
String username);
}
Вот мой -Выход класс, который был создан, а также из SDK
public class Output {
@com.google.gson.annotations.SerializedName("username")
private String username = null;
/**
* Gets username
*
* @return username
**/
public String getUsername() {
return username;
}
/**
* Sets the value of username.
*
* @param username the new value
*/
public void setUsername(String username) {
this.username = username;
}
}
И, наконец, я стараюсь реализовать метод попадет в задаче асинхронной, но он продолжает сбой в журнале.
class gateWayAsyncTask extends AsyncTask<Void, Void, Void>
{
private String userName;
public gateWayAsyncTask(String userName)
{
this.userName = userName;
}
@Override
protected Void doInBackground(Void... params)
{
creatingUser = clientFactory.build(com.awsTest.clientsdk.MyUserClient.class);
userName = creatingUser.rootGet("Archer").getUsername();
return null;
//clientFactory, and creatingUser variables are assigned in the parent class of this Async task don't worry.
}
@Override
public void onPostExecute(Void var)
{
Log.d("gateway","gateway succeded!");
Log.d("gateway",userName);
Toast.makeText(getBaseContext(),userName,Toast.LENGTH_LONG).show();
}
}
А вот мой StackTrace
12-27 12:42:48.929 29019-29019/com.daprlabs.aaron.swipedeck2 E/UncaughtException: java.lang.NullPointerException: println needs a message
at android.util.Log.println_native(Native Method)
at android.util.Log.d(Log.java:139)
at com.daprlabs.aaron.zivitApp.Cognito.LogInZivit$gateWayAsyncTask.onPostExecute(LogInZivit.java:313)
at com.daprlabs.aaron.zivitApp.Cognito.LogInZivit$gateWayAsyncTask.onPostExecute(LogInZivit.java:281)
at android.os.AsyncTask.finish(AsyncTask.java:651)
at android.os.AsyncTask.access$500(AsyncTask.java:180)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5525)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
12-27 12:42:49.169 29019-29019/com.daprlabs.aaron.swipedeck2 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.daprlabs.aaron.swipedeck2, PID: 29019
java.lang.NullPointerException: println needs a message
at android.util.Log.println_native(Native Method)
at android.util.Log.d(Log.java:139)
at com.daprlabs.aaron.zivitApp.Cognito.LogInZivit$gateWayAsyncTask.onPostExecute(LogInZivit.java:313)
at com.daprlabs.aaron.zivitApp.Cognito.LogInZivit$gateWayAsyncTask.onPostExecute(LogInZivit.java:281)
at android.os.AsyncTask.finish(AsyncTask.java:651)
at android.os.AsyncTask.access$500(AsyncTask.java:180)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5525)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
12-27 12:43:14.387 29295-29295/com.daprlabs.aaron.swipedeck2 D/gateway: gateway succeded!
12-27 12:43:14.388 29295-29295/com.daprlabs.aaron.swipedeck2 E/UncaughtException: java.lang.NullPointerException: println needs a message
at android.util.Log.println_native(Native Method)
at android.util.Log.d(Log.java:139)
at com.daprlabs.aaron.zivitApp.Cognito.LogInZivit$gateWayAsyncTask.onPostExecute(LogInZivit.java:313)
at com.daprlabs.aaron.zivitApp.Cognito.LogInZivit$gateWayAsyncTask.onPostExecute(LogInZivit.java:281)
at android.os.AsyncTask.finish(AsyncTask.java:651)
at android.os.AsyncTask.access$500(AsyncTask.java:180)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5525)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
12-27 12:43:14.604 29295-29295/com.daprlabs.aaron.swipedeck2 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.daprlabs.aaron.swipedeck2, PID: 29295
java.lang.NullPointerException: println needs a message
at android.util.Log.println_native(Native Method)
at android.util.Log.d(Log.java:139)
at com.daprlabs.aaron.zivitApp.Cognito.LogInZivit$gateWayAsyncTask.onPostExecute(LogInZivit.java:313)
at com.daprlabs.aaron.zivitApp.Cognito.LogInZivit$gateWayAsyncTask.onPostExecute(LogInZivit.java:281)
at android.os.AsyncTask.finish(AsyncTask.java:651)
at android.os.AsyncTask.access$500(AsyncTask.java:180)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5525)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
UPDATE
Так что, когда я смотрел на облака часы. Это показывает, что моя лямбда-функция вызывается и выполняется. Но, я не получаю возвращаемое значение. Так что что-то не так с моим ответом метода и/или интеграционным ответом, но я не уверен, что.
благодарит за ваш ответ. Да, именно так. Я вижу, что вы работаете на AWS. И у меня есть вопрос относительно S3 на этом посту, я надеялся, что вы, возможно, сможете ответить? http://stackoverflow.com/questions/41404527/how-to-download-image-from-aws-s3-into-imageview/41404657#41404657 – TheQ