当前位置: 首页 > 知识库问答 >
问题:

JsonReaderException,当从Android调用AWS lambda函数时

程皓轩
2023-03-14

嗨,我正在尝试从移动后端调用lambda函数。

我已经使用生成了Lambda函数。网芯

      public string FunctionHandler(string text, ILambdaContext 
      {
         return qrcode;
      }

这调用很好,在. net core和AWS控制台中没有任何错误。

但当我试图从Android Studio调用它时,我得到了以下错误。

{
"errorType": "JsonReaderException",
"errorMessage": "Unexpected character encountered while parsing value: {. Path '', line 1, position 1.",
"stackTrace": [
"at Newtonsoft.Json.JsonTextReader.ReadStringValue(ReadType readType)",
"at Newtonsoft.Json.JsonTextReader.ReadAsString()",
"at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader, JsonContract contract, Boolean hasConverter)",
"at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)",
"at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)",
"at Newtonsoft.Json.JsonSerializer.Deserialize[T](JsonReader reader)",
"at lambda_method(Closure , Stream , Stream , ContextInfo )"
]
}

Java代码,

CognitoCachingCredentialsProvider cognitoProvider = new CognitoCachingCredentialsProvider(MainActivity.this, "xxxxx", xxxxx);

LambdaInvokerFactory factory = new LambdaInvokerFactory(MainActivity.this,
                                xxxxx, cognitoProvider);

final MyInterface myInterface = factory.build(MyInterface.class);

RequestClass request = new RequestClass("Hello World");

new AsyncTask<RequestClass, Void, ResponseClass>() {@Override protected ResponseClass doInBackground(RequestClass... params) 
{

 try {
     return myInterface.TestApp(params[0]);
 } catch (LambdaFunctionException lfe) {
     Log.e("Tag", "Failed to invoke echo", lfe);
     return null;
 }
 catch(Exception e){
 Log.e("Tag", "Failed to invoke echo", e);
 return null;
 }
 }

接口

import com.amazonaws.mobileconnectors.lambdainvoker.LambdaFunction;
public interface MyInterface {
    @LambdaFunction(functionName="TestApp")
    ResponseClass TestApp(RequestClass request);

}

共有1个答案

韦辰钊
2023-03-14

当lambda函数接受一个字符串参数并返回一个字符串时,函数的接口应该如下所示:

公共接口MyInterface{

@LambdaFunction(functionName="TestApp")
String TestApp(String request);

}

 类似资料:
  • 问题内容: 我想从Android应用程序调用服务器上的特定php函数,并发送一些参数。到现在为止,我实现了可以使用HttpClient打开php文件并执行向Json的数据传输,并在我的应用程序中显示该文件。所以,现在我希望能够调用特定的函数并向其发送参数,我该怎么做?谢谢。 问题答案: 这是我编写的用于使用JSON注册新用户名的一段代码: 如果您注意到: 在那一部分中,您可以发送参数。 该方法只是

  • 问题内容: 因此,我正在创建一个使用Unity的Android应用…从Unity获得了一些资产捆绑,但在Unity启动之前我不知道该URL。因此,Unity需要在本机(Android)端调用一个函数来获取URL。 我已经迷路了一段时间(Unity文档非常糟糕,恕我直言)。我决定使用NDK来帮助我。没有Unity,关于我的库文件的所有工作都会解决……现在问题是在Unity中调用这些C函数。 这是我的

  • 这段代码适用于Java。但是在迁移到Kotlin之后,编译器higlits方法出现以下文本错误: Andswer是: 如果希望在另一个类中使用这个本机函数,可以指定包含它的类,如下所示:

  • 我正在使用Azure函数V1 c#。我有一个时间触发的azure函数,它每秒都在检查我的数据库中的一些数据。如果找到了数据,我想对它执行一些操作。此操作可能需要30秒到5分钟的时间,具体取决于其上发生的操作。 > 当我的时间触发函数获取数据并开始对其执行操作时。在第一个操作完成之前,时间触发的函数不会再次执行。因此,即使时间触发函数被安排为每秒执行一次,如果上一次迭代中的操作花费了 30 秒,则在

  • 问题内容: 我想在我的Android应用程序中对某些Java代码进行同步调用。 我的Java代码: 我的JavaScript代码: 当我点击按钮时,按钮进入按下状态。我可以在控制台日志中看到。一切正常,直到这里。 问题是,按钮永远不会回到其正常状态。它保持在按下状态。也许JavaScript执行中断了还是什么? 为什么按钮从不返回其正常状态? 问题答案: 我认为这不是让JavaScript执行Ja

  • 这应该与类似,但非常不同。虽然memoize应该与纯函数一起使用,但加速IO相关函数通常是有用的。 null