| package com.doumee.core.utils; | 
|   | 
| import javax.net.ssl.*; | 
| import java.io.ByteArrayOutputStream; | 
| import java.io.InputStream; | 
| import java.io.OutputStream; | 
| import java.net.HttpURLConnection; | 
| import java.net.URL; | 
| import java.security.KeyManagementException; | 
| import java.security.NoSuchAlgorithmException; | 
| import java.security.SecureRandom; | 
| import java.security.cert.CertificateException; | 
| import java.security.cert.X509Certificate; | 
|   | 
| public class HttpsUtil { | 
|   | 
|     public static String get(String url,boolean ignoreSSL) { | 
|         return connection(url, "GET", null, null,ignoreSSL); | 
|     } | 
|   | 
|     public static String post(String url, String data, String contentType, boolean ignoreSSL) { | 
|         return connection(url, "POST", data, contentType, ignoreSSL); | 
|     } | 
|     public static String postJsonString(String url, String data) { | 
|         if(url.startsWith("https://")){ | 
|             return connection(url, "POST", data, "application/json", true); | 
|         }else{ | 
|             return connectionHttp(url, "POST", data, "application/json"); | 
|         } | 
|     } | 
|   | 
|     public static String connection(String url,String method,String data,String contentType,boolean ignoreSSL){ | 
|         HttpsURLConnection connection = null; | 
|         try { | 
|             URL _url = new URL(url); | 
|             connection = (HttpsURLConnection) _url.openConnection(); | 
|             connection.setRequestMethod(method); | 
|             connection.setDoOutput(true); | 
|             connection.setDoInput(true); | 
|             connection.setUseCaches(false); | 
|             if(contentType != null){ | 
|                 connection.setRequestProperty("Content-Type", contentType); | 
|             } | 
|   | 
|             if(ignoreSSL){ | 
|                 //信任所有ssl证书和主机 | 
|                 TrustManager[] trustManagers = {new HttpsTrustManager()}; | 
|                 SSLContext context = SSLContext.getInstance("TLS"); | 
|                 context.init(null, trustManagers, new SecureRandom()); | 
|                 connection.setSSLSocketFactory(context.getSocketFactory()); | 
|                 connection.setHostnameVerifier(new HostnameVerifier() { | 
|                     @Override | 
|                     public boolean verify(String hostname, SSLSession session) { | 
|                         return true; | 
|                     } | 
|                 }); | 
|             } | 
|   | 
|   | 
|             connection.connect(); | 
|   | 
|             if(data != null){ | 
|                 OutputStream outputStream = connection.getOutputStream(); | 
|                 outputStream.write(data.getBytes("utf-8")); | 
|                 outputStream.close(); | 
|             } | 
|   | 
|             int responseCode = connection.getResponseCode(); | 
|             if (responseCode == HttpsURLConnection.HTTP_OK) { | 
|                 InputStream is = connection.getInputStream(); | 
|                 byte[] b = new byte[4096]; | 
|                 ByteArrayOutputStream baos = new ByteArrayOutputStream(b.length); | 
|                 int len; | 
|                 while ((len = is.read(b)) != -1) { | 
|                     baos.write(b, 0, len); | 
|                 } | 
|                 is.close(); | 
|                 return baos.toString("utf-8"); | 
|             } | 
|             return connection.getResponseMessage(); | 
|         } catch (Exception e) { | 
|             e.printStackTrace(); | 
|         } finally { | 
|             if(connection != null){ | 
|                 connection.disconnect(); | 
|             } | 
|         } | 
|         return null; | 
|     } | 
|     public static InputStream connectionInputsteam(String url,String method,String data,String contentType ){ | 
|         HttpURLConnection connection = null; | 
|         try { | 
|             URL _url = new URL(url); | 
|             connection = (HttpURLConnection) _url.openConnection(); | 
|             connection.setRequestMethod(method); | 
|             connection.setDoOutput(true); | 
|             connection.setDoInput(true); | 
|             connection.setUseCaches(false); | 
|             if(contentType != null){ | 
|                 connection.setRequestProperty("Content-Type", contentType); | 
|             } | 
|             connection.connect(); | 
|             if(data != null){ | 
|                 OutputStream outputStream = connection.getOutputStream(); | 
|                 outputStream.write(data.getBytes("utf-8")); | 
|                 outputStream.close(); | 
|             } | 
|             int responseCode = connection.getResponseCode(); | 
|             if (responseCode == HttpsURLConnection.HTTP_OK) { | 
|                return  connection.getInputStream(); | 
|             } | 
|         } catch (Exception e) { | 
|             e.printStackTrace(); | 
|         } finally { | 
|             if(connection != null){ | 
|                 connection.disconnect(); | 
|             } | 
|         } | 
|         return null; | 
|     } | 
|     public static String connectionHttp(String url,String method,String data,String contentType ){ | 
|         HttpURLConnection connection = null; | 
|         try { | 
|             URL _url = new URL(url); | 
|             connection = (HttpURLConnection) _url.openConnection(); | 
|             connection.setRequestMethod(method); | 
|             connection.setDoOutput(true); | 
|             connection.setDoInput(true); | 
|             connection.setUseCaches(false); | 
|             if(contentType != null){ | 
|                 connection.setRequestProperty("Content-Type", contentType); | 
|             } | 
|   | 
|             connection.connect(); | 
|   | 
|             if(data != null){ | 
|                 OutputStream outputStream = connection.getOutputStream(); | 
|                 outputStream.write(data.getBytes("utf-8")); | 
|                 outputStream.close(); | 
|             } | 
|   | 
|             int responseCode = connection.getResponseCode(); | 
|             if (responseCode == HttpsURLConnection.HTTP_OK) { | 
|                 InputStream is = connection.getInputStream(); | 
|                 byte[] b = new byte[4096]; | 
|                 ByteArrayOutputStream baos = new ByteArrayOutputStream(b.length); | 
|                 int len; | 
|                 while ((len = is.read(b)) != -1) { | 
|                     baos.write(b, 0, len); | 
|                 } | 
|                 is.close(); | 
|                 return baos.toString("utf-8"); | 
|             } | 
|             return connection.getResponseMessage(); | 
|         } catch (Exception e) { | 
|             e.printStackTrace(); | 
|         } finally { | 
|             if(connection != null){ | 
|                 connection.disconnect(); | 
|             } | 
|         } | 
|         return null; | 
|     } | 
|   | 
|   | 
|     public static void main(String[] args) { | 
|         //局部信任所有证书和主机 | 
|         String result = HttpsUtil.get("https://127.0.0.1:8443/ssl-test/test01.do",true); | 
|         System.out.println(result); | 
|   | 
|         //外部信任所有证书和主机 | 
|         HttpsTrustManager.allowAllSSL(); | 
|         String response = HttpsUtil.get("https://127.0.0.1:8443/ssl-test/test01.do", false); | 
|         System.out.println(result); | 
|   | 
|     } | 
|     public static InputStream postJson(String url, String data){ | 
|         HttpsURLConnection connection = null; | 
|         try { | 
|             URL _url = new URL(url); | 
|             connection = (HttpsURLConnection) _url.openConnection(); | 
|             connection.setRequestMethod("POST"); | 
|             connection.setDoOutput(true); | 
|             connection.setDoInput(true); | 
|             connection.setUseCaches(false); | 
|             connection.setRequestProperty("Content-Type", "application/json"); | 
|             connection.connect(); | 
|             //信任所有ssl证书和主机 | 
|             TrustManager[] trustManagers = {new HttpsTrustManager()}; | 
|             SSLContext context = SSLContext.getInstance("TLS"); | 
|             context.init(null, trustManagers, new SecureRandom()); | 
|             connection.setSSLSocketFactory(context.getSocketFactory()); | 
|             connection.setHostnameVerifier(new HostnameVerifier() { | 
|                 @Override | 
|                 public boolean verify(String hostname, SSLSession session) { | 
|                     return true; | 
|                 } | 
|             }); | 
|             if(data != null){ | 
|                 OutputStream outputStream = connection.getOutputStream(); | 
|                 outputStream.write(data.getBytes("utf-8")); | 
|                 outputStream.close(); | 
|             } | 
|   | 
|             int responseCode = connection.getResponseCode(); | 
|             if (responseCode == HttpsURLConnection.HTTP_OK) { | 
|                 InputStream is = connection.getInputStream(); | 
|                 return is; | 
|             } | 
|         } catch (Exception e) { | 
|             e.printStackTrace(); | 
|         } finally { | 
|             if(connection != null){ | 
|                 //     connection.disconnect(); | 
|             } | 
|         } | 
|         return null; | 
|     } | 
| } | 
|   | 
| class HttpsTrustManager implements X509TrustManager { | 
|   | 
|     private static TrustManager[] trustManagers = {new HttpsTrustManager()}; | 
|   | 
|     @Override | 
|     public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { | 
|         // TODO Auto-generated method stub | 
|   | 
|     } | 
|   | 
|     @Override | 
|     public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { | 
|         // TODO Auto-generated method stub | 
|   | 
|     } | 
|   | 
|     @Override | 
|     public X509Certificate[] getAcceptedIssuers() { | 
|         // TODO Auto-generated method stub | 
|         return null; | 
|     } | 
|   | 
|     public static void allowAllSSL() { | 
|         try { | 
|             SSLContext context = SSLContext.getInstance("TLS"); | 
|             context.init(null, trustManagers, new SecureRandom()); | 
|             HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory()); | 
|             HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { | 
|                 @Override | 
|                 public boolean verify(String hostname, SSLSession session) { | 
|                     return true; | 
|                 } | 
|             }); | 
|         } catch (NoSuchAlgorithmException | KeyManagementException e) { | 
|             e.printStackTrace(); | 
|         } | 
|     } | 
|   | 
| } |