android webview加载页面失败事件的处理,包括http异常的情况

网上查到的方法是如下这样的,这种方法对于服务器可以访问,但是发生40x错误时是无效的。

java 复制代码
webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
        super.onReceivedError(view, request, error);
        // 页面加载失败
        // 可以在这里处理加载失败的逻辑,比如显示错误信息
    }
});

正确方法应该这样:在onReceivedHttpError中处理服务器正常,但是http请求失败的问题,比如404页面不存在等;onReceivedError中处理的是服务器异常,比如不可达的情况。

处理方法多种多样,比如尝试其他服务节点、加载一个本地的静态html等。

java 复制代码
views.startWebview.setWebViewClient(new WebViewClient() {
    @Override
    public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
        super.onReceivedHttpError(view, request, errorResponse);
        Log.e(TAG, "onReceivedHttpError " + request.getUrl().toString() + ",error:" + errorResponse.toString());
        pageError(view);
    }

    @Override
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
        super.onReceivedError(view, request, error);
        Log.e(TAG, "onReceivedError" + request.getUrl().toString() + ",error:" + error.toString());
        pageError(view);
    }

    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
//                super.onReceivedSslError(view, handler, error);
        Log.e(TAG, "onReceivedSslError " + view.getUrl() + ",error:" + error.toString());
        pageError(view);
    }

    private void pageError(WebView view) {
        view.loadUrl("file:android_asset/xxx.html"); //加载一个本地html文件
    }
});
相关推荐
命运之手6 小时前
【Android】自定义换肤框架01之皮肤包制作
android·skin·skinner·换肤框架·不重启换肤
练习本6 小时前
android perfetto使用技巧梳理
android
GitLqr7 小时前
Android - 云游戏本地悬浮输入框实现
android·开源·jitpack
周周的Unity小屋7 小时前
Unity实现安卓App预览图片、Pdf文件和视频的一种解决方案
android·unity·pdf·游戏引擎·webview·3dwebview
单丽尔10 小时前
Gemini for China 大更新,现已上架 Android APP!
android
JerryHe11 小时前
Android Camera API发展历程
android·数码相机·camera·camera api
Synaric12 小时前
Android与Java后端联调RSA加密的注意事项
android·java·开发语言
程序员老刘·13 小时前
如何评价Flutter?
android·flutter·ios
JoyceMill14 小时前
Android 图像效果的奥秘
android
想要打 Acm 的小周同学呀15 小时前
ThreadLocal学习
android·java·学习