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

本文介绍了解决XUtils3中HTTPS请求时遇到的证书验证错误的方法。通过设置默认的主机名验证器,实现了对所有证书的信任,从而绕过了HTTPS证书验证。

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

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


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

终于发现:

在初始化Xutitls时:

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

问题解决。


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值