所以我读了很多关于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);
}
如你所见,我已经检查了
从API 21开始支持Build.VERSION.SDK_INT> = 21 以来 errorResponse.getStatusCode()
方法。但是,如果我想在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。我采取了解决方法。但是如果我想避免使用这种弃用的方法呢?请建议。感谢。
答案 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