package org.arong.util.https; import java.io.IOException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.Proxy; import java.net.URL; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; public class HttpsUtils { public static HttpURLConnection getConnection(String urlStr, Proxy proxy) throws MalformedURLException, IOException, KeyManagementException, NoSuchAlgorithmException { HttpURLConnection conn = null; if (urlStr.toLowerCase().startsWith("https")) conn = getHttpsConnection(urlStr, proxy); else conn = getHttpConnection(urlStr, proxy); return conn; } private static HttpURLConnection getHttpConnection(String urlStr, Proxy proxy) throws MalformedURLException, IOException { URL url = new URL(urlStr); HttpURLConnection conn = null; if(proxy != null){ conn = (HttpURLConnection) url.openConnection(proxy); }else{ conn = (HttpURLConnection) url.openConnection(); } return conn; } private static HttpsURLConnection getHttpsConnection(String urlStr, Proxy proxy) throws IOException, NoSuchAlgorithmException, KeyManagementException { URL url = new URL(urlStr); HttpsURLConnection conn = null; if(proxy != null){ conn = (HttpsURLConnection) url.openConnection(proxy); }else{ conn = (HttpsURLConnection) url.openConnection(); } // 不验证服务器主机名和证书 conn.setHostnameVerifier(new IgnoreHostnameVerifier()); TrustManager[] tm = { new X509TrustManager4Portal() }; SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, tm, null); SSLSocketFactory ssf = sslContext.getSocketFactory(); conn.setSSLSocketFactory(ssf); return conn; } }