Android:WebView onReceivedHttpError不返回状态码!= 200

时间:2017-05-03 13:33:40

标签: android webview

我需要知道是否可以使用android WebView加载网页。理想情况下,我想获取文档状态代码并检查它是否是!= 200.我没有找到支持它的WebViewClient中的任何方法。

一种有效的方法是#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,也会调用该名称。

我使用此网站作为参考测试https://www.httpstatus.io/ 页面在WebView中成功加载,但遗漏了.js.png等文件,这些文件使用onReceivedHttpError调用404

如何使用WebView

获取文档状态代码

1 个答案:

答案 0 :(得分:0)

好像没有获取文档状态代码的方法。解决方法看起来像这样。基本上打开与httpclient的连接并检查其中的状态代码,然后使用WebView

加载它

E.g。

  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

相同