cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menilai 404 dalam paparan web di bawah android?

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_u1582phpcn_u15822835 hari yang lalu680

membalas semua(2)saya akan balas

  • phpcn_u1582

    phpcn_u15822017-05-16 13:28:53

            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();
                        }
                    }
                }
            };

    balas
    0
  • 滿天的星座

    滿天的星座2017-05-16 13:28:53

    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.

    balas
    0
  • Batalbalas