/** * This function will install a trust manager that will blindly trust all SSL certificates. The * reason this code is being added is to enable developers to do development using self signed SSL * certificates on their web server. * * <p>The standard HttpsURLConnection class will throw an exception on self signed certificates if * this code is not run. */ private static SSLSocketFactory trustAllHosts(HttpsURLConnection connection) { // Install the all-trusting trust manager SSLSocketFactory oldFactory = connection.getSSLSocketFactory(); try { // Install our all trusting manager SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); SSLSocketFactory newFactory = sc.getSocketFactory(); connection.setSSLSocketFactory(newFactory); } catch (Exception e) { Log.e(LOG_TAG, e.getMessage(), e); } return oldFactory; }
@Override protected URLConnection openConnection(URL url) throws IOException { URLConnection connection = super.openConnection(url); if (connection instanceof HttpsURLConnection) { HttpsURLConnection urlConnection = (HttpsURLConnection) connection; HostnameVerifier hostnameVerifier = urlConnection.getHostnameVerifier(); if (hostnameVerifier != kindHostnameVerifier) { urlConnection.setHostnameVerifier(kindHostnameVerifier); } if (urlConnection.getSSLSocketFactory() != trustedSslSocketFactory && trustedSslSocketFactory != null) { urlConnection.setSSLSocketFactory(trustedSslSocketFactory); } } return connection; }