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. dockerfile - 為什么docker容器啟動不了?2. javascript - webapp業務流程基本一致,多套主題(樣式基本不一樣,交互稍有偏差)管理,并且有不斷有新增主題,該如何設計組件化架構?3. javascript - ejs支持if else語法嗎4. 請教各位大佬,瀏覽器點 提交實例為什么沒有反應5. macos - mac下docker如何設置代理6. javascript - 用rem寫的頁面,安卓手機顯示文字是正常的,蘋果顯示的文字是特別小的是為什么呢7. javascript - 移動端,當出現遮罩層的時候,遮罩層里有div是超出高度scroll的,怎么避免滑動div的時候,body跟隨滑動?8. javascript - JS設置Video視頻對象的currentTime時出現了問題,IE,Edge,火狐,都可以設置,反而chrom卻...9. 新手 - Python 爬蟲 問題 求助10. javascript - 學習網頁開發,關于head區域一段腳本的疑惑
