Android httpClient 自定义Https

来源:互联网 发布:深圳海关待遇知乎 编辑:程序博客网 时间:2024/06/02 02:45

直接上代码:

 private static HttpClient getHttpClient() {        HttpClient client = new DefaultHttpClient();        InputStream ins = null;        try {            ins = DataApplication.getInstance().getAssets().open("tomcat.cer"); //下载的证书放到项目中的assets目录中//            ins = DataApplication.getInstance().getResources().openRawResource(R.raw.tomcat); //下载的证书放到项目中的res/raw目录中            CertificateFactory cerFactory = CertificateFactory.getInstance("X.509");            Certificate cer = cerFactory.generateCertificate(ins);            KeyStore keyStore = KeyStore.getInstance("PKCS12", "BC");            keyStore.load(null, null);            keyStore.setCertificateEntry("trust", cer);            SSLSocketFactoryEx socketFactory = new SSLSocketFactoryEx(keyStore);            Scheme sch = new Scheme("https", socketFactory, 443);            client.getConnectionManager().getSchemeRegistry().register(sch);            client.getParams().setIntParameter(HttpConnectionParams.CONNECTION_TIMEOUT, HTTP_CONNECTION_TIMEOUT);            client.getParams().setIntParameter(HttpConnectionParams.SO_TIMEOUT, SOCKET_CONNECTION_TIMEOUT);        } catch (Exception e) {            e.printStackTrace();            return new DefaultHttpClient();        }        return client;    }

static class SSLSocketFactoryEx extends SSLSocketFactory {        SSLContext sslContext = SSLContext.getInstance("TLS");        public SSLSocketFactoryEx(KeyStore truststore)                throws NoSuchAlgorithmException, KeyManagementException,                KeyStoreException, UnrecoverableKeyException {            super(truststore);            TrustManager tm = new X509TrustManager() {                @Override                public java.security.cert.X509Certificate[] getAcceptedIssuers() {                    return null;                }                @Override                public void checkClientTrusted(                        java.security.cert.X509Certificate[] chain, String authType)                        throws java.security.cert.CertificateException {                }                @Override                public void checkServerTrusted(                        java.security.cert.X509Certificate[] chain, String authType)                        throws java.security.cert.CertificateException {                }            };            sslContext.init(null, new TrustManager[]{tm}, null);        }        @Override        public Socket createSocket(Socket socket, String host, int port,                                   boolean autoClose) throws IOException, UnknownHostException {            return sslContext.getSocketFactory().createSocket(socket, host, port,                    autoClose);        }        @Override        public Socket createSocket() throws IOException {            return sslContext.getSocketFactory().createSocket();        }    }


 keytool -printcert -rfc -file srca.cer



有任何问题。联系方式:1808418098(qq、微信)




0 0
原创粉丝点击