我正在研究一个正在加载网址的解决方案。我需要获取 Http 错误,以便我可以重新加载 url 来创建新会话。
@Override
public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
super.onReceivedHttpError(view, request, errorResponse);
Toast.makeText(getActivity(), "Unexpected error occurred.Reload page again.", Toast.LENGTH_SHORT).show();
if(errorResponse.getStatusCode() == 401){
customWebView.loadUrl(url);
}
}
Run Code Online (Sandbox Code Playgroud)
但上述代码的问题在于它是从 Marshmallow 运行的。任何人都可以建议我一种解决方案,让我在 Android 版本 < 23 以下时出现错误吗?
void onReceivedHttpError (WebView view,
WebResourceRequest request,
WebResourceResponse errorResponse)
Run Code Online (Sandbox Code Playgroud)
通知主机应用程序加载资源时从服务器收到 HTTP 错误。
任何人都可以建议我一个解决方案,在 Android 版本 < 23 以下时出现错误
onReceivedHttpError添加到API level 23. 所以低于23就不起作用了。
尝试用
.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
/*if(Build.VERSION.SDK_INT<23)
{
// You work
}*/
}
@Override
public void onReceivedHttpError(
WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
/*if(Build.VERSION.SDK_INT >= 23)
{
// Your Work
}*/
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler,
SslError error) {
}
});
Run Code Online (Sandbox Code Playgroud)
供参考
此方法在 API 级别 23 中已弃用。请改用 onReceivedError(WebView, WebResourceRequest, WebResourceError)。