Android中访问证书有问题的SSL网页的方法
程序员文章站
2023-08-29 21:28:15
pc上的浏览器会弹出证书错误的对话框,提示你是否要无视错误继续浏览。实际上在webview里也可以这样做,以实现加载证书有问题的页面。
复制代码 代码如下:webview...
pc上的浏览器会弹出证书错误的对话框,提示你是否要无视错误继续浏览。实际上在webview里也可以这样做,以实现加载证书有问题的页面。
复制代码 代码如下:
webview webview = (webview) findviewbyid(r.id.webview);
webview.setwebviewclient(new webviewclient() {
@override
public void onreceivedsslerror(webview view, sslerrorhandler handler, sslerror error) {
// *** never do this!!! ***
// super.onreceivedsslerror(view, handler, error);
// let's ignore ssl error
handler.proceed();
}
}
只需像这样重载webviewclient的onreceivedsslerror()函数并在其中执行handler.proceed(),即可忽略ssl证书错误,继续加载页面。
这里要注意的是,千万不要调用super.onreceivedsslerror()。这是因为webviewclient的onreceivedsslerror()函数中包含了一条handler.cancel()(见源码,其含义是停止加载,所以如果调用了super.onreceivedsslerror(),其结果就是第一次访问时无法加载,第二次以后可以加载(不知道为什么),而且还可能发生libc的段错误:
复制代码 代码如下:
a/libc: fatal signal 11 (sigsegv) at 0x00000010 (code=1)
下一篇: WinForm遍历窗体所有子控件的方法