Maison > Java > javaDidacticiel > Comment puis-je gérer les connexions HTTPS non vérifiées sous Android ?

Comment puis-je gérer les connexions HTTPS non vérifiées sous Android ?

Mary-Kate Olsen
Libérer: 2024-12-10 16:46:16
original
269 Les gens l'ont consulté

How Can I Handle Unverified HTTPS Connections in Android?

Connexion HTTPs non vérifiée sous Android

Lors de l'exécution de requêtes HTTP(S), si vous rencontrez une erreur « Exception SSL certificat de serveur non approuvé » lors de l'utilisation de HTTPS, vous devrez peut-être gérer la vérification du certificat du serveur explicitement.

Solution :

Pour contourner la vérification des certificats et faire confiance à tous les serveurs, vous pouvez implémenter le code suivant :

// Ignore hostname verification
HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
    @Override
    public boolean verify(String hostname, SSLSession session) {
        return true;
    }
};

// Trust all certificates
TrustManager[] trustAllCerts = new TrustManager[] {
    new X509TrustManager() {
        @Override
        public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {}

        @Override
        public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {}

        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return new X509Certificate[] {};
        }
    }
};

// Install the all-trusting trust manager
try {
    SSLContext sc = SSLContext.getInstance("TLS");
    sc.init(null, trustAllCerts, new SecureRandom());
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
    e.printStackTrace();
}

// Open the connection, setting hostname verification to false and using the custom trust manager
HttpURLConnection http = null;
if (url.getProtocol().toLowerCase().equals("https")) {
    HttpsURLConnection https = (HttpsURLConnection) url.openConnection();
    https.setHostnameVerifier(DO_NOT_VERIFY);
    http = https;
} else {
    http = (HttpURLConnection) url.openConnection();
}
Copier après la connexion

Avec ce code , la validation du certificat SSL sera ignorée pour les connexions HTTP et HTTPS normales.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal