Comment juger 404 en webview sous Android ?
phpcn_u1582
phpcn_u1582 2017-05-16 13:26:53
0
2
607

J'utilise

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

        }
        
        

Cette méthode n'a pas été annulée. Après vérification, il est indiqué qu'elle nécessite l'API23. . Quelqu'un connaît-il d'autres moyens d'obtenir 404 ?

phpcn_u1582
phpcn_u1582

répondre à tous(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();
                    }
                }
            }
        };
滿天的星座

Exécutez une AsyncTask dans onPageStarted, utilisez un client Http tel que OkHttpClient dans AsyncTask pour faire une demande pour l'URL à laquelle il faut accéder et obtenez le code

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

Ici, Webview et OkHttpClient sont effectivement chargés, mais le WebView est masqué lorsque l'AsyncTask est en cours d'exécution. S'il est confirmé qu'il est 200, il sera affiché. Si ce n'est pas 200, la page dont le chargement a échoué sera affichée.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal