我正在尝试调用我的AWS API网关,但每次我的应用崩溃时都会收到以下错误:
Unable to resolve host "myurl.execute-api.us-east-1.amazonaws.com": No address associated with hostname
我的AndroidManifest中有<uses-permission android:name="android.permission.INTERNET" />
,这是调用请求的代码:
private void invokeLambda(){
CloudLogicAPIConfiguration apiConfiguration = CloudLogicAPIFactory.getAPIs()[0];
final Map<String, String> headers = new HashMap<String, String>();
final Map<String, String> queryStringParameters = new HashMap<String, String>();
final CloudLogicAPI client =
AWSMobileClient.defaultMobileClient().createAPIClient(apiConfiguration.getClientClass());
String body = "PersonName";
final byte[] content = body.getBytes(StringUtils.UTF8);
final ApiRequest request = new ApiRequest(client.getClass().getSimpleName())
.withPath("/items")
.withHttpMethod(HttpMethodName.valueOf("POST"))
.withHeaders(headers)
.addHeader("Content-Type", "application/json")
.addHeader("Content-Length", String.valueOf(content.length))
.withBody(content);
Thread apiRequestThread = new Thread(new Runnable() {
@Override
public void run() {
try {
final ApiResponse postResponse = client.execute(request);
Log.e("RESPONSE", "The response is " + postResponse.getStatusText());
} catch (final AmazonClientException exception) {
Log.e("TAG", exception.getMessage(), exception);
// TODO: Put your exception handling code here (e.g., network error)
}
}
});
apiRequestThread.start();
try {
apiRequestThread.join();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
有人知道我哪里出错吗?
答案 0 :(得分:0)
检查SDK是否使用适当的API主机名的简单方法是根据API网关中列出的内容进行检查。
通过在API网关中打开API并点击&#34; Stages&#34;来查找它。在左栏中。单击一个舞台并验证&#34;调用URL&#34;匹配您的应用程序尝试连接的内容。
您需要一个阶段才能访问您的API,所以如果没有,那么请回到&#34;资源&#34;页面并选择&#34;操作&#34; - &GT; &#34;部署API&#34;。如果是这种情况,您将要重新生成示例应用程序,以便包含最新的SDK。
确认应用程序外部地址的第二种方法是使用Web浏览器导航到调用URL。如果您看到&#34;缺少身份验证令牌&#34;消息,或者找不到404 / Server以外的任何消息,然后您知道该URL在该URL上可用,并且这是您的应用程序配置的问题。