主机名未经验证 ANDROID [英] Hostname was not verified ANDROID

查看:45
本文介绍了主机名未经验证 ANDROID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am using ksoap lib to call the webservice . In some cases service run correctly but in a case it gives Host name was not verified below is my code for calling 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)

推荐答案

验证您的主机为

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

这篇关于主机名未经验证 ANDROID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆