无法解析主机“{url}”没有与主机名相关联的地址AWS API Gateway

时间:2017-03-11 22:55:58

标签: android api amazon-web-services aws-api-gateway

我正在尝试调用我的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();
    }


}

有人知道我哪里出错吗?

1 个答案:

答案 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上可用,并且这是您的应用程序配置的问题。