Android WebView加载网页报(net::ERR_CONNECTION_TIMED_OUT,net::err_connection_reset)等错误提示

在安卓应用开发遇到需要打开网页时,需要用到WebView组件,测试时一切正常,而当实际运维过程中,却总有客户打不开,提示“net::ERR_CONNECTION_TIMED_OUT”或者“net::err_connection_reset”等类似的问题,乍一看,net开头应该跟网络有关,然而使用系统自带的浏览器打开该网页却可以正常访问,此时就要查看是不是代码的问题了。

经过一番折腾,发现有时候可能跟原网站的UserAgent有关系,于是在代码里添加了UA设置相关的代码:

setting.setUserAgentString(“User-Agent:Android”);

再给有出现该类问题的客户安装测试,可以正常打开了。

有关安卓UserAgent,可以参考该篇文章:https://www.jianshu.com/p/4f9e2e66ea12

2021-05-09更新:

出现net::err_connection_reset的错误原来跟

shouldOverrideUrlLoading

这个方法的返回值有关系。

官方api文档大致翻译一下:

  • 若没有设置 WebViewClient 则由系统(Activity Manager)处理该 url,通常是使用浏览器打开或弹出浏览器选择对话框。
  • 若设置 WebViewClient 且该方法返回 true ,则说明由应用的代码处理该 url,WebView 不处理,也就是程序员自己做处理。
  • 若设置 WebViewClient 且该方法返回 false,则说明由 WebView 处理该 url,即用 WebView 加载该 url。
public boolean shouldOverrideUrlLoading(WebView view, String url2){
    view.loadUrl(url2);
    return false;
}
这里返回false,就能正常打开了!
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论