Package Com.nbcio.baishicha.yunbiji; Import java.io.IOException; Import Java.net.Socket; Import java.net.UnknownHostException; Import java.security.KeyManagementException; Import Java.security.KeyStore; Import java.security.KeyStoreException; Import java.security.NoSuchAlgorithmException; Import java.security.UnrecoverableKeyException; Import Javax.net.ssl.SSLContext; Import Javax.net.ssl.TrustManager; Import Javax.net.ssl.X509TrustManager; Import Org.apache.http.conn.ssl.SSLSocketFactory; public class Sslsocketfactoryex extends Sslsocketfactory { Sslcontext Sslcontext = sslcontext.getinstance ("TLS"); Public Sslsocketfactoryex (KeyStore truststore) Throws NoSuchAlgorithmException, Keymanagementexception, Keystoreexception, Unrecoverablekeyexception { Super (Truststore); TrustManager TM = new X509trustmanager () { 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 (); } } 2, write a new httpclient getnewhttpclient to replace the original defaulthttpclient, the code is as follows: public static HttpClient Getnewhttpclient () { try { KeyStore Truststore = keystore.getinstance (Keystore.getdefaulttype ()); Truststore.load (null, NULL);
Sslsocketfactory SF = new Sslsocketfactoryex (Truststore); Sf.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", SF, 443));
Clientconnectionmanager ccm = new Threadsafeclientconnmanager (params, registry); return new Defaulthttpclient (CCM, params); catch (Exception e) { return new Defaulthttpclient (); } } |