我需要知道是否可以使用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
答案 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