在做项目的时候遇到了webview怎么也访问不来https的接口,找了半天原因,
上网查了帖子才知道,现在把原因分析写出来,和解决办法,让大家以后尽量避免这样的问题。
在Android中,WebView是用来load http和https网页到本地应用的控件。
在默认情况下,通过loadUrl(String url)方法,可以顺利load诸如,http://www.baidu.com之类的页面。
但是,当load有ssl层的https页面时,如https://money.183.com.cn/,如果这个网站的安全证书在Android无法得到认证,WebView就会变成一个空白页,
而并不会像PC浏览器中那样跳出一个风险提示框。因此,我们必须针对这种情况进行处理。
解决办法:
在认证证书不被Android所接受的情况下,我们可以通过设置重写WebViewClient的onReceivedSslError方法在其中设置接受所有网站的证书来解决,具体代码如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
注:在重写WebViewClient
的onReceivedSslError
方法时,注意一定要去除onReceivedSslError
方法的super.onReceivedSslError(view, handler, error);
,否则设置无效。