这两天我一直在尝试使用AWS API网关生成的Android SDK,但没有太大成功。我按照教程使用Lambda函数创建了一个简单的计算器,创建了一个简单的计算器API,并将两者进行了整合。

使用API控制台,我可以测试POST,它工作正常,我收到正确的结果提供两个数字和一个操作。我的问题开始时,我生成一个Android的SDK。

然而,当我调用 "client.rootPost() "方法时,我得到一个错误。如果不复制整个错误日志,错误内容如下。at com.amazonaws.mobileconnectors.apigateway.ApiClientHandler.invoke(ApiClientHandler.java:118)

at java.lang.reflect.Proxy.invoke(Proxy.java:1006)

at $Proxy3.execute(Unknown Source)

at com.example.awstest.MainActivity.onCreate(MainActivity.java:52)

我在MainActivity中的代码是这样的:@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Toolbar toolbar = findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

FloatingActionButton fab = findViewById(R.id.fab);

fab.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)

.setAction("Action", null).show();

}

});

ApiClientFactory factory = new ApiClientFactory();

final SimpleCalculatorAPIClient client = factory.build(SimpleCalculatorAPIClient.class);

Input body = new Input();

body.setA(new BigDecimal(1));

body.setB(new BigDecimal(1));

body.setOp("+");

Result output = client.rootPost(body); //LINE 52, where the error points to

String result = output.getOutput().getC().toString();

}

在我的build.gradle中,我有以下的依赖关系。implementation fileTree(include: ['*.jar'], dir: 'libs')

implementation fileTree(include: ['*.jar'], dir: 'app/libs')

implementation 'com.amazonaws:aws-android-sdk-core:2.16.11'

implementation 'com.amazonaws:aws-android-sdk-apigateway-core:2.16.11'

最后两个依赖项不是教程的一部分,但我发现我需要它们来调用 "ApiClientFactory" 类的另一个问题。这让我相信,关于这个问题,我漏掉了一些很明显的东西。仅仅按照上面的教程是不够的,它假设你已经知道一些东西,而我不知道。

有什么想法,我在这里遗漏了什么?

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐