欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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)