| | |
| | | package com.doumee.core.utils; |
| | | |
| | | import org.apache.http.client.methods.CloseableHttpResponse; |
| | | import org.apache.http.client.methods.HttpGet; |
| | | import org.apache.http.client.utils.URIBuilder; |
| | | import org.apache.http.impl.client.CloseableHttpClient; |
| | | import org.apache.http.impl.client.HttpClients; |
| | | import org.apache.http.util.EntityUtils; |
| | | |
| | | import javax.net.ssl.*; |
| | | import java.io.ByteArrayOutputStream; |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.io.OutputStream; |
| | | import java.net.URI; |
| | | 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; |
| | | import java.util.Map; |
| | | |
| | | public class HttpsUtil { |
| | | |
| | |
| | | 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 { |
| | |
| | | } |
| | | 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 { |
| | |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | /** |
| | | * 发送get请求 |
| | | * @param url 请求URL |
| | | * @param param 请求参数 key:value url携带参数 或者无参可不填 |
| | | * @return |
| | | */ |
| | | public static String doGet(String url, Map<String, String> param) { |
| | | // 创建Httpclient对象 |
| | | CloseableHttpClient httpclient = HttpClients.createDefault(); |
| | | String resultString = ""; |
| | | CloseableHttpResponse response = null; |
| | | try { |
| | | // 创建uri |
| | | URIBuilder builder = new URIBuilder(url); |
| | | if (param != null) { |
| | | for (String key : param.keySet()) { |
| | | builder.addParameter(key, param.get(key)); |
| | | } |
| | | } |
| | | URI uri = builder.build(); |
| | | // 创建http GET请求 |
| | | HttpGet httpGet = new HttpGet(uri); |
| | | // 执行请求 |
| | | response = httpclient.execute(httpGet); |
| | | // 判断返回状态是否为200 |
| | | if (response.getStatusLine().getStatusCode() == 200) { |
| | | resultString = EntityUtils.toString(response.getEntity(), "UTF-8"); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | try { |
| | | if (response != null) { |
| | | response.close(); |
| | | } |
| | | httpclient.close(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | return resultString; |
| | | } |
| | | |
| | | 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); |
| | | |
| | | } |
| | | } |
| | | |