HTTP状态代码webview android,WebViewClient

时间:2017-08-13 10:59:09

标签: android http webview webviewclient

所以我读了很多关于SO的问题,但仍然想问这个问题。我的片段中有一个webview。我正在调用URL并想知道HTTP状态代码(成功或失败)。我从WebViewClient类扩展了一个类,下面是相同的片段。

我遇到了这种方法:

@Override
    public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
        super.onReceivedHttpError(view, request, errorResponse);
        if (Build.VERSION.SDK_INT >= 21){
            Log.e(LOG_TAG, "HTTP error code : "+errorResponse.getStatusCode());
        }

        webviewActions.onWebViewReceivedHttpError(errorResponse);
    }

如你所见,我已经检查了

  

Build.VERSION.SDK_INT> = 21   以来   errorResponse.getStatusCode()

从API 21开始支持

方法。但是,如果我想在API 21之前使用此状态代码,该怎么办?然后我找到了下面的代码:

@SuppressWarnings("deprecation")
    @Override
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        super.onReceivedError(view, errorCode, description, failingUrl);
        Toast.makeText(context, "error code : "+errorCode+ "\n description : "+description, Toast.LENGTH_SHORT).show();
        if (errorCode == -2){
            Log.e(LOG_TAG, "error code : "+errorCode+ "\n description : "+description);
            redirectToHostNameUrl();
        }
    }

此方法已弃用,因此我不得不使用注释。在这里,在' errorCode'我得到了HTTP代码404的值-2。我采取了解决方法。但是如果我想避免使用这种弃用的方法呢?请建议。感谢。

1 个答案:

答案 0 :(得分:1)

方法 onReceivedHttpError 仅支持API> = 23,您可以使用 onReceivedError 来支持21岁以下和21岁以上的API。

.as-console-wrapper { max-height: 100% !important; top: 0; }

更多细节https://developer.android.com/reference/android/webkit/WebViewClient.html#ERROR_FILE