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

結果還是報錯,網上搜了一下:


在設置信任所有證書前要執行setDefaultHostnameVerifier方法,可是Xutils3裏面的requestParams並沒有這個方法。怎麼辦,繼續找。。。。

終於發現:

在初始化Xutitls時:

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

問題解決。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章