如何在WebView中准确获取状态代码?

时间:2016-11-24 10:48:55

标签: android webview http-status-codes http-error

我想要捕获状态代码,例如401,404,500等。并处理具有不同错误代码的内容。当我第一次使用WebView时,我认为onReceivedError(WebView view, int errorCode, String description, String failingUrl)回调中的错误代码参数是我想要的。但遗憾的是它是WebViewClient中定义的常数值。是的,我已经在网上搜索了这个问题了很长时间,包括official docs和社区问题:issue01issue02issue03,但它什么都没有。我知道的唯一一件事是我们可以在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

请帮助或尝试提供一些有关如何实现这一目标的建议。我只是不知道为什么要重复我的问题,甚至没有给出实际答案。

0 个答案:

没有答案