package com.devandroid.ncuwlogin.libs; import java.io.IOException; import java.net.Socket; import java.security.KeyManagementException; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.UnrecoverableKeyException; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import cz.msebera.android.httpclient.HttpVersion; import cz.msebera.android.httpclient.client.HttpClient; import cz.msebera.android.httpclient.conn.ClientConnectionManager; import cz.msebera.android.httpclient.conn.scheme.PlainSocketFactory; import cz.msebera.android.httpclient.conn.scheme.Scheme; import cz.msebera.android.httpclient.conn.scheme.SchemeRegistry; import cz.msebera.android.httpclient.conn.ssl.SSLSocketFactory; import cz.msebera.android.httpclient.impl.client.DefaultHttpClient; import cz.msebera.android.httpclient.impl.conn.tsccm.ThreadSafeClientConnManager; import cz.msebera.android.httpclient.params.BasicHttpParams; import cz.msebera.android.httpclient.params.HttpParams; import cz.msebera.android.httpclient.params.HttpProtocolParams; import cz.msebera.android.httpclient.protocol.HTTP; public class IgnoreSSLSocketFactory extends SSLSocketFactory { SSLContext mSSLContext = SSLContext.getInstance("TLS"); @Override public Socket createSocket() throws IOException { return mSSLContext.getSocketFactory().createSocket(); } @Override public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException { return mSSLContext.getSocketFactory().createSocket(socket, host, port, autoClose); } public IgnoreSSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException { super(truststore); TrustManager mTrustManager = 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 null; } }; mSSLContext.init(null, new TrustManager[]{mTrustManager}, null); } public static HttpClient createMyHttpClient() { try { KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); trustStore.load(null, null); SSLSocketFactory mSSLSocketFactory = new IgnoreSSLSocketFactory(trustStore); mSSLSocketFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); HttpParams params = new BasicHttpParams(); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setContentCharset(params, HTTP.UTF_8); SchemeRegistry registry = new SchemeRegistry(); registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); registry.register(new Scheme("https", mSSLSocketFactory, 443)); ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry); return new DefaultHttpClient(ccm, params); } catch (KeyStoreException | NoSuchAlgorithmException | IOException | CertificateException | KeyManagementException | UnrecoverableKeyException e) { e.printStackTrace(); } return new DefaultHttpClient(); } }