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