lambda函数返回字符串,我无法在lambda函数中编写正确的语法来将其转换为json以使用GSON进行解析。在
FATAL EXCEPTION: AsyncTask #1
Process: com.innovdroid.awslambdatest, PID: 6252
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:309)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:111)
atjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:58)at java.lang.Thread.run(Thread.java:818)Caused by: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 2at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:176)at com.google.gson.Gson.fromJson(Gson.java:803)at com.google.gson.Gson.fromJson(Gson.java:741)at com.amazonaws.mobileconnectors.lambdainvoker.LambdaJsonBinder.deserialize(LambdaJsonBinder.java:47)at com.amazonaws.mobileconnectors.lambdainvoker.LambdaInvocationHandler.processInvokeResult(LambdaInvocationHandler.java:134)at com.amazonaws.mobileconnectors.lambdainvoker.LambdaInvocationHandler.invoke(LambdaInvocationHandler.java:64)at java.lang.reflect.Proxy.invoke(Proxy.java:393)
at $Proxy0.GetAllSchoolsNames(Unknown Source)at com.innovdroid.awslambdatest.MainActivity$1.doInBackground(MainActivity.java:47)at com.innovdroid.awslambdatest.MainActivity$1.doInBackground(MainActivity.java:41)
at android.os.AsyncTask$2.call(AsyncTask.java:295) at java.util.concurrent.FutureTask.run(FutureTask.java:237)at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818) Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 2at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:374)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:165)at com.google.gson.Gson.fromJson(Gson.java:803) at com.google.gson.Gson.fromJson(Gson.java:741) at com.amazonaws.mobileconnectors.lambdainvoker.Lamb at com.amazonaws.mobileconnectors.lambdainvoker.LambdaInvocationHandler.processInvokeResult(LambdaInvocationHandler.java:134) at com.amazonaws.mobileconnectors.lambdainvoker.LambdaInvocationHandler.invoke(LambdaInvocationHandler.java:64) at java.lang.reflect.Proxy.invoke(Proxy.java:393) at $Proxy0.GetAllSchoolsNames(Unknown Source) at com.innovdroid.awslambdatest.MainActivity$1.doInBackground(MainActivity.java:47) at com.innovdroid.awslambdatest.MainActivity$1.doInBackground(MainActivity.java:41)at android.os.AsyncTask$2.call(AsyncTask.java:295)at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
问题是aws lambda返回:{“/contrecords/”:“6”},如果您有一个json并再次将其转换为json,就会出现这种情况:
在python中,如果您有: not_encoded={“contrecords”:str(item_count)}//这已经是json了 没必要usejson.dumps(not_encoded)//这将导致Android GSON在解析时出错。在
移动设备可以调用lambda函数(发送请求和获取响应)。但android设备连接到amazon lambda函数时仍然存在响应超时的问题。如果你的amazon lambda在vpc中,你必须有一个Internet网关和Nat网关。当发生超时时,Nat网关会重新打开与amazon资源的连接。在
参见: 创建Python Lambda以访问amazon RDS:https://docs.aws.amazon.com/lambda/latest/dg/vpc-rds.html 为amazon lambda配置Nat网关: https://blog.rackspace.com/aws-201-understanding-the-default-virtual-private-cloud
相关问题 更多 >
编程相关推荐