閱讀702 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go 仿qq聊天及定位等
  下一篇:go webview使用sslError解決https跳轉報錯的問題