要实现webView的https双向认证,首先重写WebViewClient,然后在shouldInterceptRequest方法中拦截当前访问的url,为它配置认证证书,具体实现方法如下(获取证书的方法在之前文章以实现,这里就不再贴出)
public class WebViewClientHttps extends WebViewClient {
SSLSocketFactory sslSocketFactory = MySSLSocketFactory.getSocketFactory(MyApplication.instance);
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
return processRequest(Uri.parse(url));
}
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
return processRequest(request.getUrl());
}
private WebResourceResponse processRequest(Uri uri) {
try {
//设置连接
URL url = new URL(uri.toString());
HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
//为request设置SSL Socket Factory
urlConnection.setSSLSocketFactory(sslSocketFact