Android WebViewClient,有404时不会调用onErrorReceived

Posted

技术标签:

【中文标题】Android WebViewClient,有404时不会调用onErrorReceived【英文标题】:Android WebViewClient, onErrorReceived not being called when there is a 404 【发布时间】:2011-02-26 00:00:38 【问题描述】:

我有一个 WebView,其中一个 WebViewClient 定义了 onErrorReceived 和 onPageFinished。

onPageFinished 被正确调用,所以我知道 WebViewclient 已正确附加到 WebView。但是,WebView 中有一些 javascript 调用:

location.href="http://kernel.org/asdf/asdf/asdf/asdf";

即使是 404,也不会调用 onErrorReceived 侦听器。它不适用于 javascript 调用吗?

编辑:经过一些测试,我发现此函数不会报告任何 404。我在这里设置了一个测试项目:http://vimtips.org/media/WebViewTest.zip

此方法似乎不能用于测试 404。有人知道这样做的方法吗?

【问题讨论】:

无法使用 WebView 完成,但是您可以使用基本的 HTTPClient 并检查响应代码。这是有关如何执行此操作的链接:***.com/questions/2592843/… 【参考方案1】:

在situation之后,会调用onErrorReceived。

ERROR_AUTHENTICATION 服务器上的用户身份验证失败 ERROR_BAD_URL 网址格式错误 ERROR_CONNECT 连接服务器失败 ERROR_FAILED_SSL_HANDSHAKE 未能执行 SSL 握手 ERROR_FILE 通用文件错误 ERROR_FILE_NOT_FOUND 文件未找到 ERROR_HOST_LOOKUP 服务器或代理主机名查找失败 ERROR_IO 读取或写入服务器失败 ERROR_PROXY_AUTHENTICATION 代理上的用户身份验证失败 ERROR_REDIRECT_LOOP 重定向过多 ERROR_TIMEOUT 连接超时 ERROR_TOO_MANY_REQUESTS 加载期间请求过多 ERROR_UNKNOWN 一般错误 ERROR_UNSUPPORTED_AUTH_SCHEME 不支持的身份验证方案(非基本或摘要) ERROR_UNSUPPORTED_SCHEME 不支持的 URI 方案

实际上,上面的列表中没有一个 HTTP 响应代码。

【讨论】:

【参考方案2】:

这是不可能的。至少,不是以一种非 hacky 的方式。

【讨论】:

你能详细说明一下吗?

以上是关于Android WebViewClient,有404时不会调用onErrorReceived的主要内容,如果未能解决你的问题,请参考以下文章

Android - 在 AsyncTask 中设置 WebViewClient 会导致 NullPointerException

Android - 如何在 API 级别 4 的 android WebViewClient 中拦截表单 POST

Android WebViewClient 回调调用过于频繁

Android WebViewClient onReceivedError 未调用 404 错误

从 Android WebViewClient 中的网站下载 Blob 文件

在 Android WebViewClient 中获取空白页