首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未验证ANDROID主机名

未验证ANDROID主机名
EN

Stack Overflow用户
提问于 2013-10-03 19:12:31
回答 2查看 10.8K关注 0票数 2

我使用ksoap库来调用webservice。在某些情况下,服务可以正确运行,但在某些情况下,它会给出未验证的主机名,下面是我调用webservice的代码。

代码语言:javascript
复制
 HttpTransportSE httpTransport = new HttpTransportSE(URL, MessageConstant.TIMEOUT_TIME);
            httpTransport.debug = true; // this is optional, use it if you don't want to use a packet sniffer to check what the sent message was (httpTransport.requestDump)
            httpTransport.call(SOAP_ACTION, envelope); // send request

这是我的原木猫

代码语言:javascript
复制
java.io.IOException: Hostname 'XXX.XX.XXX.XXX' was not verified
at libcore.net.http.HttpConnection.verifySecureSocketHostname(HttpConnection.java:223)
at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:446)
at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289)
at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239)
at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
at libcore.net.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:165)
at org.ksoap2.transport.ServiceConnectionSE.connect(ServiceConnectionSE.java:76)
at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:152)
at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:95)
EN

回答 2

Stack Overflow用户

发布于 2013-10-05 03:27:14

此链接有几个可能的原因;没有一个响应被标记为“已接受”:

你还应该看看这里:

  • http://developer.android.com/training/articles/security-ssl.html

发生这种情况的一个原因是服务器配置错误。服务器配置了一个证书,该证书没有与您尝试访问的服务器匹配的主题或主题备用名称字段。可以将一个证书用于多个不同的服务器。

例如,查看带有openssl s_client -connect google.com:443 | openssl x509 -text的google.com证书,您可以看到一个主题支持*.google.com,但也支持*.youtube.com、*.android.com和其他主题的替代名称。仅当证书未将您要连接的服务器名称列为可接受时,才会出现该错误。

票数 1
EN

Stack Overflow用户

发布于 2016-04-12 15:55:02

验证您的主机为

代码语言:javascript
复制
   HttpsURLConnection.setDefaultHostnameVerifier(new HostVerifier());


 public class HostVerifier implements HostnameVerifier {

@Override
public boolean verify(String hostname, SSLSession session) {
    Log.i(TAG, "HOST NAME " + hostname);
    if (hostname.contentEquals("XXX.XX.XXX.XXX")) {
        Log.i(TAG, "Approving certificate for host " + hostname);
        return true;
    }
    return false;
 }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19157710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档