web-dev-qa-db-fra.com

Webview incapable de charger l'URL https dans Android?

Je suis en train de mettre en œuvre l'application Webview sous Android. Lorsque j'essaie de charger https url une ou deux fois, il termine l'activité . Agian essayant de charger https url cela indique que la page Web n'est pas disponible. S'il vous plaît trouver ci-dessous l'image ce que j'ai.

enter image description here

Lorsque je clique à nouveau sur cette URL, le site Web s'affiche.

J'ai utilisé le code ci-dessous pour charger l'URL.

webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true); 
webView.loadUrl("https://www.facebook.com");
webView.clearView();
webView.measure(100, 100);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setLoadWithOverviewMode(true);



    webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }

        @SuppressLint("NewApi")
        @Override
        public void onReceivedSslError(WebView view, SslErrorHandler handler,     SslError error) {
            super.onReceivedSslError(view, handler, error);

            // this will ignore the Ssl error and will go forward to your site
            handler.proceed();
            error.getCertificate();
        }
    });

s'il vous plaît toute aide les gars .......

Merci d'avance

14
Hareesh

Essayez d'utiliser les attributs ci-dessous:

        webView = (WebView) findViewById(R.id.webView1);
        WebSettings settings = webView.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setDomStorageEnabled(true);
12
KOTIOS

Ajouter des paramètres Internet dans votre fichier manifest.xml

<uses-permission Android:name="Android.permission.INTERNET" />

et vérifier pouvez-vous accéder à Internet sur votre appareil. 

8
CodingRat

Supprimer cette chaîne:

super.onReceivedSslError(view, handler, error);

et dans cette méthode

public boolean shouldOverrideUrlLoading(WebView view, String url) {

retourne à faux
comme ça:

 return false;

Ça m'a aidé 

5
Alex

Vous devriez enlever ceci

super.OnReceiveSslError(view,handler,error);
3
Zahra.HY

Ajoutez cette méthode de substitution à votre implémentation WebViewClient. Vous devrez le compiler avec Android SDK 2.2 (API niveau 8) ou une version ultérieure. La méthode apparaît dans le SDK public à partir de la version 2.2 (API de niveau 8), mais nous l’avons testée sur des appareils exécutant les versions 2.1, 1.6 et 1.5, et elle fonctionne également sur ces appareils (le comportement a donc toujours été présent).

WebView.setWebViewClient(new WebViewClient() {

     public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){

         handler.proceed(); 

     }
    });
2
zhangweiheb

Une possibilité ici est une condition de concurrence. 

Vous chargez https://www.facebook.com/ avant de configurer WebViewClient. Il est donc possible que votre implémentation de OnReceivedSslError () ne soit jamais appelée si vous obtenez une réponse assez rapide de facebook. 

Cela expliquerait pourquoi cela fonctionne pour certaines personnes, pas pour d'autres, et fonctionne toujours si la page est rechargée. 

De plus, je pense que vous devriez simplement renvoyer false depuis shouldOverrideUrlLoading () si vous voulez que la page soit chargée plutôt que d'essayer de la recharger - cela pourrait provoquer une récursion/un plantage infini - éventuellement en fonction du temps.

1
MZB

Décembre 2016 réponse:

Si cela se produit uniquement sur certains appareils avec Android 5+ et sur certaines pages, cela est probablement dû à ce bogue lié au chrome:

https://www.chromium.org/developers/androidwebview/webview-ct-bug

La solution consiste à:

  • dire aux clients de mettre à jour Webview à 55+ (cela peut ne pas être facile sur tous les appareils)
  • dites aux clients de reculer leur horloge système de quelques semaines (solution non intéressante)
  • obtenir un cert non-Symantec
0
jakub.g