Bagaimana untuk menilai 404 dalam paparan web di bawah android?
phpcn_u1582
phpcn_u1582 2017-05-16 13:26:53
0
2
610

Saya menggunakan

 @Override
        public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
            super.onReceivedError(view, request, error);
            PtrCLog.d("WebFragment", "onReceivedError: " + "");

        }
        
        

Kaedah ini belum ditarik balik Saya periksa dan mengatakan bahawa ia memerlukan API23. . Adakah sesiapa tahu cara lain untuk mendapatkan 404?

phpcn_u1582
phpcn_u1582

membalas semua(2)
phpcn_u1582
        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();
                    }
                }
            }
        };
滿天的星座

Jalankan AsyncTask dalam onPageStarted, gunakan klien Http seperti OkHttpClient dalam AsyncTask untuk membuat permintaan untuk URL yang perlu diakses dan dapatkan kod tersebut

    class WebViewStatusRequester extends AsyncTask<String, String, Integer> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            web.setVisibility(View.GONE);
        }
        @Override
        protected void onPostExecute(Integer result) {
            super.onPostExecute(result);
            if(result == 1) {
                web.setVisibility(View.VISIBLE);
            } else if(result == 0) {
                showLoadFail();
            }
        }
        @Override
        protected 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;
        }
    }

Di sini, Webview dan OkHttpClient sebenarnya dimuatkan, tetapi WebView disembunyikan apabila AsyncTask berjalan Jika ia disahkan sebagai 200, ia akan dipaparkan Jika bukan 200, halaman yang gagal dimuatkan akan dipaparkan.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan