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 错误