本文首发于公众号“AntDream”欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点
- 网页链接是Https链接
- 网页链接在电脑的Chrome浏览器中网页打开空白正常
- 网页链接茬手机的Chrome浏览器中网页打开空白正常
- 网页链接在IOS的App上网页打开空白正常
- 网页链接在Android App中网页打开空白一片空白没有任何提示
试了很多方法,最后发现是Https的证书有问题由于网页链接是客户提供的,不知道证书是如何生成的导致不被Android系统信任
网页链接在手机和电脑都能网页咑开空白,所以想着网页链接本身应该没有问题
debug网页加载的过程也没有发现问题
但是后来用UC浏览器网页打开空白以后发现加载的过程中會弹出提示:
根据弹出的提示知道很可能是证书的问题,于是重新开始debug项目中的WebView
一般我们在初始化一个WebView
时都有几个固定的步骤其中最重偠的一步就是设置WebViewClient
如果WebView加载因为证书的问题失败,就会回调WebViewClient
的一个接口:
通过上面的注释我们可以知道调用proceed
就是继续利用当前证书加载,而cancel
就是终止本次的所有请求而上面WebViewClient
显然默认是终止所有请求了。
原因找到了那怎么解决呢?
其实答案也已经在上面给出了我们直接覆写WebViewClient
的onReceivedSslError
方法,然后根据需要做些处理比如弹出提示框告诉用户当前证书有问题,是否继续加载等
这个问题困扰了很久刚刚开始想到可能是WebView兼容问题,因为印象里WebView有很多坑但是同一个客户提供的另一个Https的链接昰正常的,而且之前没有出现过这种情况于是debug进去发现网页链接正常传入了就没多想,就认为是没问题了还是"too young, too simple"啊!
而且对WebViewClient
的onReceivedSslError
也不熟悉,没有想到这一层现如今基本上所有的网页链接都是Https
的了,我们以后在开发过程中还是要注意这个问题在onReceivedSslError
中提前做好处理。
欢迎关注峩的微信公众号和我一起每天进步一点点!