xUtils3 Https请求报错:javax.net.ssl.SSLPeerUnverifiedException: Hostname ***.****.**not verified,跳过证书检测

使用xUtils3发送https请求报错javax.net.ssl.SSLPeerUnverifiedException: Hostname ***.****.**not verified。

我想不验证证书直接进行访问(和http一样了)。

解决过程: 
   刚开始设置 (requestParams是参数对象)

    /** 判断https证书是否成功验证 */
        SSLContext sslContext = getSSLContext(MyApp.mContext);
        if (null == sslContext) {
            Utils.LogUtils("Error:Can't Get SSLContext!");
            return;
        }
        requestParams.setSslSocketFactory(sslContext.getSocketFactory()); //绑定SSL证书(https请求)


    /**
     * 获取Https的证书
     *
     * @param context Activity(fragment)的上下文
     * @return SSL的上下文对象
     */
    private static SSLContext s_sSLContext = null;


    private static SSLContext getSSLContext(Context context) {
        try {
            s_sSLContext = SSLContext.getInstance("TLS");
            //信任所有证书 (官方不推荐使用)
            s_sSLContext.init(null, new TrustManager[]{new X509TrustManager() {


                @Override
                public X509Certificate[] getAcceptedIssuers() {
                    return null;
                }


                @Override
                public void checkServerTrusted(X509Certificate[] arg0, String arg1)
                        throws CertificateException {


                }


                @Override
                public void checkClientTrusted(X509Certificate[] arg0, String arg1)
                        throws CertificateException {


                }
            }}, new SecureRandom());
            return s_sSLContext;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

结果还是报错,网上搜了一下:

xUtils3 Https请求报错:javax.net.ssl.SSLPeerUnverifiedException: Hostname ***.****.**not verified,跳过证书检测_第1张图片

在设置信任所有证书前要执行setDefaultHostnameVerifier方法,可是Xutils3里面的requestParams并没有这个方法。怎么办,继续找。。。。

终于发现:

在初始化Xutitls时:

x.Ext.setDefaultHostnameVerifier(new HostnameVerifier() {
            @Override
            public boolean verify(String hostname, SSLSession session) {
                return true;
            }
        });

问题解决。


你可能感兴趣的:(个人经验)