当前位置:   article > 正文

Android WebView加载网页失败异常处理_android 内嵌 webview net::errhttp_response_codefailu

android 内嵌 webview net::errhttp_response_codefailure

开发过程中会遇到WebView加载失败的时候,会出现404、500、找不到网页等错误,页面显示系统默认的错误界面。系统默认界面难看,而且也会暴露网页地址不安全。所以我们需要对WebView加载失败或错误进行处理,自定义一个统一样式来加载失败的界面。

网页加载失败图

解决方案

我们可以自定义一个View用来展示加载失败的界面,也可以写一个错误展示的 Html让 WebView加载等。这里我们需要先重写WebViewClientonReceivedError()WebChromeClientonReceivedTitle()方法。

  • Android 6.0以下处理方法:

① 判断 Html页面的标题中是否含有“Error”、“找不到网页”等信息;

  1. @Override
  2. public void onReceivedTitle(WebView view, String title) {
  3. super.onReceivedTitle(view, title);
  4. // android 6.0 以下通过title获取判断
  5. if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
  6. if (title.contains("404") || title.contains("500") || title.contains("Error") || title.contains("找不到网页") || title.contains("网页无法打开")) {
  7. view.loadUrl("about:blank");// 避免出现默认的错误界面
  8. view.loadUrl(mErrorUrl);// 加载自定义错误页面
  9. }
  10. }
  11. }

② 重写WebChromeClientonReceivedTitle()方法处理(该方法已过时)

  1. @Override
  2. public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
  3. super.onReceivedError(view, errorCode, description, failingUrl);
  4. //6.0以下执行
  5. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
  6. return;
  7. }
  8. view.loadUrl("about:blank");// 避免出现默认的错误界面
  9. view.loadUrl(mErrorUrl);// 加载自定义错误页面
  10. }
  • Android 6.0以上处理方法:

① 重写WebViewClientonReceivedHttpError()方法,判断错误码来处理;

  1. @Override
  2. public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
  3. super.onReceivedHttpError(view, request, errorResponse);
  4. // 这个方法在 android 6.0才出现
  5. int statusCode = errorResponse.getStatusCode();
  6. if (404 == statusCode || 500 == statusCode) {
  7. view.loadUrl("about:blank");// 避免出现默认的错误界面
  8. view.loadUrl(mErrorUrl);// 加载自定义错误页面
  9. }
  10. }

② 重写WebViewClientonReceivedError()方法处理

  1. @TargetApi(Build.VERSION_CODES.LOLLIPOP)
  2. @Override
  3. public void onReceivedError(WebView webView, WebResourceRequest webResourceRequest, WebResourceError webResourceError) {
  4. super.onReceivedError(webView, webResourceRequest, webResourceError);
  5. if (webResourceRequest.isForMainFrame()) {//是否是为 main frame创建
  6. view.loadUrl("about:blank");// 避免出现默认的错误界面
  7. view.loadUrl(mErrorUrl);// 加载自定义错误页面
  8. }
  9. }

net::ERR_NAME_NOT_RESOLVED

 

发送接口时提示下图错误信息:
在这里插入图片描述
原来:路径错误,两个http,改成一个就可以了。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/97488
推荐阅读
相关标签
  

闽ICP备14008679号