记录webview加载证书失效的网页,使用onReceivedSslError的一大坑

·  阅读 1111
记录webview加载证书失效的网页,使用onReceivedSslError的一大坑

最近项目需要使用webview加载证书失效的https网页,就想起来WebViewClient的onReceivedSslError方法,然后调用其中SslErrorHandler对象的proceed方法,去忽略证书的错误,我的代码如下:

@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
   super.onReceivedSslError(view, handler, error);
   handler.proceed();
}
复制代码

但是页面加载白屏,找了许久问题,最终发现问题在

super.onReceivedSslError(view, handler, error)
复制代码

上,这句代码一定要删除掉。

那么原因是什么呢?咱们查看WebViewClient的源码会发现这样一行代码:

public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
    handler.cancel();
}
复制代码

也就是说,如果你保留了super.onReceivedSslError这行代码,他就会先把本次网页加载取消,所以就白屏了。

很多开发中的问题都隐藏在很小的地方,大家检查问题一定要细心哦!

分类:
Android
标签:
收藏成功!
已添加到「」, 点击更改