Sambungan Https Tidak Disahkan dalam Android
Apabila melaksanakan permintaan HTTP(S), jika anda menghadapi ralat "SSL exception Not trusted server certificate" semasa menggunakan HTTPS, anda mungkin perlu mengendalikan pengesahan sijil pelayan secara eksplisit.
Penyelesaian:
Untuk memintas pengesahan sijil dan mempercayai semua pelayan, anda boleh melaksanakan kod berikut:
// 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(); }
Dengan kod ini , pengesahan sijil SSL akan dilangkau untuk kedua-dua sambungan HTTP dan HTTPS biasa.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Sambungan HTTPS Tidak Disahkan dalam Android?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!