当网页以错误状态响应时,不会调用Android webview onReceivedError()

时间:2018-01-15 20:56:35

标签: android webview

如果webview尝试加载某些不存在的页面,则会调用onReceivedError(),但如果服务器/网站选择以错误状态进行响应(例如状态500),则不会调用它。

# Django returning status 500
return HttpResponseServerError("returned status 500")

此回复显示在状态为500的常规Chrome浏览器中。但是,webview只是加载它,从不调用onReceivedError()。

app / webview如何判断服务器是否正在发送错误状态?我需要像处理任何错误一样处理它。

谢谢!

1 个答案:

答案 0 :(得分:1)

在这里查看Android Developer WebViewClient.

您可以在此处阅读onReivedError响应的错误。 HTML错误500(内部服务器错误不在其中)。此外,自版本23以来,不推荐使用ReceivedError。您可以在前一个链接中阅读此内容。

我很快就环顾四周,发现了更多关于如何获取http错误的问题,主要是答案都是否定的。

所以也许你可以通过使用HttpURLConnection测试网站来使用技巧,并使用方法getResponseCode来获取服务器的状态。例如,您可以在服务器上放置一个小文件,然后尝试使用HttpURLConnection获取此小文件。如果存在内部服务器错误,您将收到500错误作为响应。然后你可以处理你想要的东西。

我知道这不是最优雅的答案,但正如我所说,也许你可以使用某种技巧。