| package doumeemes.core.utils; | 
|   | 
| import com.alibaba.fastjson.JSONObject; | 
| import org.apache.http.HttpEntity; | 
| import org.apache.http.client.methods.CloseableHttpResponse; | 
| import org.apache.http.client.methods.HttpGet; | 
| import org.apache.http.client.methods.HttpPost; | 
| import org.apache.http.conn.ssl.NoopHostnameVerifier; | 
| import org.apache.http.conn.ssl.SSLConnectionSocketFactory; | 
| import org.apache.http.conn.ssl.TrustSelfSignedStrategy; | 
| import org.apache.http.entity.StringEntity; | 
| import org.apache.http.impl.client.CloseableHttpClient; | 
| import org.apache.http.impl.client.HttpClients; | 
| import org.apache.http.ssl.SSLContexts; | 
| import org.apache.http.util.EntityUtils; | 
| import org.springframework.web.util.UriComponentsBuilder; | 
|   | 
| import javax.net.ssl.*; | 
| import java.io.ByteArrayOutputStream; | 
| import java.io.IOException; | 
| import java.io.InputStream; | 
| import java.io.OutputStream; | 
| 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; | 
| import java.util.Map; | 
|   | 
| public class HttpsUtil { | 
|   | 
|     public static String get(String url,boolean ignoreSSL) { | 
|         return connection(url, "GET", null, null,ignoreSSL); | 
|     } | 
|   | 
|   | 
|     public static String sendPostByHttps(String url, Map<String, String> body, String token) { | 
|   | 
|         CloseableHttpResponse response = null; | 
|         // 处理请求路径 | 
|         url = UriComponentsBuilder.fromHttpUrl(url) | 
|                 .toUriString(); | 
|         //创建httpclient对象 | 
|         CloseableHttpClient client = null; | 
|         String respBody; | 
|         try { | 
|             client = HttpClients.custom() | 
|                     .setSSLSocketFactory(new SSLConnectionSocketFactory(SSLContexts.custom() | 
|                             //忽略掉对服务器端证书的校验 | 
|                             .loadTrustMaterial(null, new TrustSelfSignedStrategy()) | 
|                             .build(), NoopHostnameVerifier.INSTANCE)) | 
|                     .build(); | 
|             //创建post方式请求对象 | 
|             HttpPost httpPost = new HttpPost(url); | 
|             // 请求头设置 | 
|             httpPost.setHeader("Accept", "*/*"); | 
|             httpPost.setHeader("connection", "Keep-Alive"); | 
|             httpPost.setHeader("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); | 
|             httpPost.setHeader("Content-type", "application/json;charset=utf-8"); | 
|             httpPost.setHeader("Authorization", token);//如果需要token请修改传入自己的token以及Authorization | 
|             // 情求体设置 | 
|             if (body != null) { | 
|                 httpPost.setEntity(new StringEntity(JSONObject.toJSONString(body), "utf-8")); | 
|             } | 
|             //执行请求操作,并拿到结果 | 
|             response = client.execute(httpPost); | 
|             //获取结果实体 | 
|             HttpEntity entity = response.getEntity(); | 
|             if (entity != null) { | 
|                 respBody = EntityUtils.toString(entity); | 
|                 return respBody; | 
|             } | 
|         } catch (Exception e) { | 
|         } finally { | 
|             try { | 
|                 if (client != null) { | 
|                     client.close(); | 
|                 } | 
|                 if (response != null) { | 
|                     response.close(); | 
|                 } | 
|             } catch (IOException e) { | 
|             } | 
|         } | 
|   | 
|         return null; | 
|     } | 
|     public static String sendGetByHttps(String url,String token) { | 
|   | 
|         CloseableHttpResponse response = null; | 
|         // 处理请求路径 | 
|         url = UriComponentsBuilder.fromHttpUrl(url) | 
|                 .toUriString(); | 
|         //创建httpclient对象 | 
|         CloseableHttpClient client = null; | 
|         String respBody; | 
|         try { | 
|             client = HttpClients.custom() | 
|                     .setSSLSocketFactory(new SSLConnectionSocketFactory(SSLContexts.custom() | 
|                             //忽略掉对服务器端证书的校验 | 
|                             .loadTrustMaterial(null, new TrustSelfSignedStrategy()) | 
|                             .build(), NoopHostnameVerifier.INSTANCE)) | 
|                     .build(); | 
|             //创建post方式请求对象 | 
|             HttpGet httpPost = new HttpGet(url); | 
|             // 请求头设置 | 
|             httpPost.setHeader("Accept", "*/*"); | 
|             httpPost.setHeader("connection", "Keep-Alive"); | 
|             httpPost.setHeader("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); | 
|             httpPost.setHeader("Content-type", "application/json;charset=utf-8"); | 
|             httpPost.setHeader("Authorization", token);//如果需要token请修改传入自己的token以及Authorization | 
|   | 
|             //执行请求操作,并拿到结果 | 
|             response = client.execute(httpPost); | 
|             //获取结果实体 | 
|             HttpEntity entity = response.getEntity(); | 
|             if (entity != null) { | 
|                 respBody = EntityUtils.toString(entity); | 
|                 return respBody; | 
|             } | 
|         } catch (Exception e) { | 
|         } finally { | 
|             try { | 
|                 if (client != null) { | 
|                     client.close(); | 
|                 } | 
|                 if (response != null) { | 
|                     response.close(); | 
|                 } | 
|             } catch (IOException e) { | 
|             } | 
|         } | 
|   | 
|         return null; | 
|     } | 
|   | 
|     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 void main(String[] args) { | 
|         //局部信任所有证书和主机 | 
|         String result = HttpsUtil.sendGetByHttps("http://localhost/x_organization_assemble_express/jaxrs/person/63c288ff-f04d-4e63-b1b8-35071b13ad0e?x-token=B6oxLY3qj4QVaDvi7QiV5AcSIf_M1oiifPjFnXf7xOnFD0FL3f1lFhM2xIcT3GGMf3vrW27MZuMUAvXn08hwUmRiV20q5VtNEMYSA2ic85o",null); | 
|         System.out.println(result); | 
|   | 
|   | 
|     } | 
|   | 
| } | 
| 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(); | 
|         } | 
|     } | 
|   | 
| } |