主机名未经过验证的ANDROID

时间:2013-10-03 11:12:31

标签: android web-services socket.io ksoap2 ksoap

我使用ksoap lib来调用webservice。在某些情况下,服务运行正常,但在某种情况下,主机名称未经验证 下面是我调用webservice的代码。

 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

这是我的同一个

的日志猫
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)

2 个答案:

答案 0 :(得分:1)

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

您还应该看一下:

        

可能发生这种情况的一个原因是服务器配置错误。该   服务器配置了没有主题的证书   或者使用与您所在服务器匹配的替代名称字段   试图达到。可以使用一个证书   许多不同的服务器

     

例如,查看google.com   使用openssl s_client -connect google.com:443 | openssl x509 -text的证书,您可以看到支持* .google.com的主题,但是   还为* .youtube.com,* .android.com和。提供替代名称   其他。仅在连接的服务器名称时才会发生此错误   未被证书列为可接受的。

答案 1 :(得分:0)

验证您的主机为

   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;
 }
}