2017-05-03 604 views
-1

我需要知道一個網頁是否可以通過android WebView加載。理想情況下,我想獲取文檔狀態碼並檢查它是否=!200。我在WebViewClient中找不到支持它的任何方法。Android:WebView onReceivedHttpError不返回狀態碼!= 200

的一個方法,它的工作原理有點是#onReceivedHttpError

通知HTTP錯誤已從服務器在加載資源接收到主機應用程序。 HTTP錯誤的狀態碼大於等於400.這個回調將被調用,用於任何資源(iframe,圖像等),而不僅僅是主頁面。因此,建議在此回調中執行最低限度的工作。請注意,服務器響應的內容可能不會在errorResponse參數中提供。

@Override 
    public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) { 
    webView.loadUrl("http://www.google.de"); 
    super.onReceivedHttpError(view, request, errorResponse); 
} 

但正如一些與上述400狀態碼返回即使網頁加載例如缺少.png一個被立即調用。

我使用這個網站作爲一個參考測試成功地在WebViewhttps://www.httpstatus.io/ 該頁面加載,但錯過像.js.png這就要求onReceivedHttpError404一些文件。

如何通過WebView獲取文檔狀態碼?

回答

0

好像沒有辦法獲取文檔狀態碼。解決方法如下所示。基本上打開一個與httpclient的連接並檢查那裏的狀態碼,然後用WebView

加載它。

AndroidHttpClient httpClient = new AndroidHttpClient(url); 
     httpClient.get(null, null, new AsyncCallback() { 
      @Override 
      public void onComplete(HttpResponse httpResponse) { 
       if (httpResponse.getStatus() == HttpURLConnection.HTTP_OK) { 
        webView.loadUrl(url); 
       } else { 
        webView.loadUrl("http://www.google.com"); 
       } 
      } 

      @Override 
      public void onError(Exception e) { 
       webView.loadUrl("http://www.google.com"); 
      } 
     }); 

我現在用的是Basic-Http-Client但這個想法是與任何其他httpClient

相同
相關問題