天天看點

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的時候導包就導自己工程裡的這個包名就行!

繼續閱讀