1. 程式人生 > >android-訪問https

android-訪問https

okhttp使用https忽略證書驗證

		final SSLSocketFactory sslSocketFactory ;
        try {
            SSLContext sslContext;
            sslContext = SSLContext.getInstance("SSL");
            sslContext.init(null,new X509TrustManager[]{trustManager},null);
            sslSocketFactory = sslContext.getSocketFactory();
        } catch (GeneralSecurityException e) {
            throw new RuntimeException(e);
        }

    X509TrustManager trustManager = new X509TrustManager() {
        @Override
        public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {

        }
        @Override
        public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {

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

    HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
        @Override
        public boolean verify(String hostname, SSLSession session) {
            return true;
        }
    };

//設定okhttp的兩個屬性 
okHttpClient.setHostnameVerifier(DO_NOT_VERIFY); 
okHttpClient.setSslSocketFactory(sslSocketFactory);

webview 載入https --忽略證書

webview.setWebViewClient(new WebViewClient() {
    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        //handler.cancel();// 預設的處理方式,WebView變成空白頁
        handler.proceed();//忽略證書的錯誤繼續Load頁面內容,不會顯示空白頁面
        // super.onReceivedSslError(view, handler, error);
    }
});