webview使用sslError解決https跳轉報錯的問題
到底如何使用WebView訪問https的url——處理SslError呢?
在Android中,WebView是用來load http和https網頁到本地應用的控件。在默認情況下,通過loadUrl(String url)方法,可以順利load。但是,當load有ssl層的https頁麵時,如果這個網站的安全證書在Android無法得到認證,WebView就會變成一個空白頁,而並不會像PC瀏覽器中那樣跳出一個風險提示框。因此,我們必須針對這種情況進行處理。(這個證書限於2.1版本以上的Android 係統才可以)
Android的處理要用到兩個類
(1)import android.NET.http.SslError;
(2)import android.webkit.SslErrorHandler;
具體的用法如下:
WebView wv = (WebView) findViewById(R.id.webview);
wv.setWebViewClient(new WebViewClient(){
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){
//handler.cancel(); 默認的處理方式,WebView變成空白頁
//handler.process();接受證書
//handleMessage(Message msg); 其他處理
}
查看Android瀏覽器源碼在TabControl.Java類中SubWindowClient方法中找,如果隻是簡單的接受所有證書的話,就直接調process()方法就行了
但是sslerror是從2.2才開始提供的。之前的版本怎麼辦?
可以把android2.2中onReceivedSslError()的源碼導入到自己的工程中,具體方法如下:
先把android2.2包中的SslError.java和WebViewClient.java導入到自己的工程中,在導入時需要建立和android2.2源碼包中一樣的包名。然後在用webview的時候導包就導自己工程裏的這個包名就行!
最後更新:2017-04-03 14:54:43