我想要捕获状态代码,例如401,404,500等。并处理具有不同错误代码的内容。当我第一次使用WebView
时,我认为onReceivedError(WebView view, int errorCode, String description, String failingUrl)
回调中的错误代码参数是我想要的。但遗憾的是它是WebViewClient
中定义的常数值。是的,我已经在网上搜索了这个问题了很长时间,包括official docs和社区问题:issue01,issue02,issue03,但它什么都没有。我知道的唯一一件事是我们可以在API 23之后使用onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse)
回调。我在下面编写了代码,但它不适用于Nexus 6p(系统版本:Android N,minSdkVersion:15,targetSdkVersion:24):
private class MyWebViewClient extends WebViewClient {
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
Log.d(TAG, error.getErrorCode() + ": " + error.getDescription());
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
Log.d(TAG, failingUrl + "\t" + errorCode + ": " + description);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
super.onReceivedHttpError(view, request, errorResponse);
Log.d(TAG, String.valueOf(errorResponse.getStatusCode()));
}
}
我使用WebView
加载需要令牌的网址,显然它应该回调onReceivedHttpError
并通过WebResourceResponse
获取错误代码401,但是没有任何登录当我在设备上运行代码时,logcat
。
请帮助或尝试提供一些有关如何实现这一目标的建议。我只是不知道为什么要重复我的问题,甚至没有给出实际答案。