Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android “无法解析主机”;{url}";没有与主机名AWS API网关关联的地址_Android_Api_Amazon Web Services_Aws Api Gateway - Fatal编程技术网

Android “无法解析主机”;{url}";没有与主机名AWS API网关关联的地址

Android “无法解析主机”;{url}";没有与主机名AWS API网关关联的地址,android,api,amazon-web-services,aws-api-gateway,Android,Api,Amazon Web Services,Aws Api Gateway,我试图调用我的AWS API网关,但每次我的应用程序崩溃时,我都会出现以下错误: 无法解析主机“myurl.execute api.us-east-1.amazonaws.com”:没有与主机名关联的地址 我的AndroidManifest中有,下面是调用请求的代码: 私有void invokeLambda(){ CloudLogicAPIConfiguration apiConfiguration=CloudLogicapFactory.getAPI()[0]; 最终映射头=新HashMap(

我试图调用我的AWS API网关,但每次我的应用程序崩溃时,我都会出现以下错误:

无法解析主机“myurl.execute api.us-east-1.amazonaws.com”:没有与主机名关联的地址

我的AndroidManifest中有
,下面是调用请求的代码:

私有void invokeLambda(){

CloudLogicAPIConfiguration apiConfiguration=CloudLogicapFactory.getAPI()[0];
最终映射头=新HashMap();
final Map queryStringParameters=new HashMap();
最终CloudLogicAPI客户端=
AWSMobileClient.defaultMobileClient().createAPIClient(apicConfiguration.getClientClass());
字符串body=“PersonName”;
最终字节[]内容=body.getBytes(StringUtils.UTF8);
final APIREST request=新APIREST(client.getClass().getSimpleName())
.withPath(“/items”)
.withHttpMethod(HttpMethodName.valueOf(“POST”))
.带标题(标题)
.addHeader(“内容类型”、“应用程序/json”)
.addHeader(“内容长度”,String.valueOf(Content.Length))
.附正文(内容);
线程apiRequestThread=新线程(new Runnable(){
@凌驾
公开募捐{
试一试{
最终ApiResponse postResponse=client.execute(请求);
Log.e(“RESPONSE”,“响应为”+postResponse.getStatusText());
}捕获(最终AmazonClientException异常){
Log.e(“TAG”,exception.getMessage(),exception);
//TODO:将异常处理代码放在此处(例如,网络错误)
}
}
});
apiRequestThread.start();
试一试{
apiRequestThread.join();
}捕获(中断异常例外){
例如printStackTrace();
}
}

有人知道我哪里会出错吗?

检查SDK是否为API使用了正确的主机名的一个简单方法是对照API网关中列出的内容进行检查

通过在API网关中打开API并单击左列中的“阶段”来找到它。单击一个阶段并验证“调用URL”与您的应用程序试图连接的内容匹配

您需要一个能够访问API的阶段,因此如果没有,请返回“资源”页面并选择“操作”->“部署API”。在这种情况下,您需要重新生成示例应用程序,以便包含最新的SDK


确认应用程序外部地址的第二种方法是使用web浏览器导航到调用url。如果您看到“缺少身份验证令牌”消息,或者未找到404/服务器以外的任何消息,则您知道API在该url处可用,并且这是您的应用程序配置的问题。

检查SDK是否为您的API使用了正确的主机名的简单方法是对照API网关中列出的内容进行检查

通过在API网关中打开API并单击左列中的“阶段”来找到它。单击一个阶段并验证“调用URL”与您的应用程序试图连接的内容匹配

您需要一个能够访问API的阶段,因此如果没有,请返回“资源”页面并选择“操作”->“部署API”。在这种情况下,您需要重新生成示例应用程序,以便包含最新的SDK


确认应用程序外部地址的第二种方法是使用web浏览器导航到调用url。如果您看到“缺少身份验证令牌”消息,或者未找到404/服务器以外的任何消息,则您知道该url上有API可用,并且这是您的应用程序配置的问题。

您可以通过网络浏览器访问您的url吗?您的url是否包含http://或https://Can 你是通过网络浏览器访问你的url的吗?您的url是否包含http://或https://
    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();
    }


}