【问题标题】:Hostname was not verified ANDROID主机名未验证 ANDROID
【发布时间】:2013-10-03 11:12:31
【问题描述】:

我正在使用 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)

【问题讨论】:

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


    【解决方案1】:

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

    你也应该看看这里:

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

    例如,查看 google.com 带有openssl s_client -connect google.com:443 | openssl x509 -text 的证书,您可以看到支持 *.google.com 的主题,但 *.youtube.com、*.android.com 和 其他。该错误仅在您连接的服务器名称时发生 to 未被证书列为可接受的。

    【讨论】:

      【解决方案2】:

      验证您的主机为

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-25
        • 2020-11-15
        • 2013-01-15
        • 1970-01-01
        • 1970-01-01
        • 2015-11-30
        • 2019-01-20
        相关资源
        最近更新 更多