android 下webview 如何判断404?
问题描述
我在使用
@Overridepublic void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { super.onReceivedError(view, request, error); PtrCLog.d('WebFragment', 'onReceivedError: ' + '');}
这个方法并没有被回掉查看了一下说是需要API23 才可以。。有大佬知道有别的方法获取404吗?
问题解答
回答1:new WebViewClient() { @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {super.onReceivedError(view, errorCode, description, failingUrl);if (errorCode == 404) { doSomething();} } @Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {super.onReceivedError(view, request, error);if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) { int errorCode = error.getErrorCode(); if (errorCode == 404) {doSomething(); }} }};回答2:
在onPageStarted里边跑一个AsyncTask,在AsyncTask里用OkHttpClient之类的Http客户端对需要访问的URL进行一次请求,取得code
class WebViewStatusRequester extends AsyncTask<String, String, Integer> {@Overrideprotected void onPreExecute() { super.onPreExecute(); web.setVisibility(View.GONE);}@Overrideprotected void onPostExecute(Integer result) { super.onPostExecute(result); if(result == 1) {web.setVisibility(View.VISIBLE); } else if(result == 0) {showLoadFail(); }}@Overrideprotected Integer doInBackground(String... params) { String url = params[0]; if(url.substring(0, 4).equals('file') == false) {try { OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder().url(url).build(); Response response = client.newCall(request).execute(); if(response.isSuccessful()) {return 1; } else {Log.i('TAG', 'fail code:' + response.code());return 0; }} catch (IOException e) { e.printStackTrace();}return 0; } return 1;} }
在这里实际上是Webview和OkHttpClient进行了加载,只是AsyncTask跑的时候把WebView隐藏起来了,确认是200了就显示,不是200就显示加载失败的页面
相关文章:
1. mysql - 数据库中的引擎和表的引擎的区别在哪?2. css3 - 新版支付宝 账单页面滑动时月份栏被下一个月给顶上去是什么效果3. javascript - AJAX请求疑问句4. javascript - chart.js如何修改某个指定bar的颜色5. 网页爬虫 - python爬虫用BeautifulSoup爬取<s>元素并写入字典,但某些div下没有这一元素,导致自动写入下一条,如何解决?6. mysql - phpMyAdmin无法导入数据7. 超链接里的target问题8. javascript - 图片请求失败怎么去掉左上角的小图标?9. HTML源文件和引用文件在同一个目录里直接写引用文件名为什么还是打不开10. thinkphp3.2.3对接新版支付宝

网公网安备