| package com.panzhihua.common.utlis; | 
|   | 
| import java.io.BufferedReader; | 
| import java.io.IOException; | 
| import java.io.InputStream; | 
| import java.io.InputStreamReader; | 
| import java.net.ConnectException; | 
| import java.net.SocketTimeoutException; | 
| import java.net.URL; | 
| import java.net.URLConnection; | 
| import java.nio.charset.StandardCharsets; | 
| import java.security.cert.X509Certificate; | 
|   | 
| import javax.net.ssl.*; | 
|   | 
| import org.slf4j.Logger; | 
| import org.slf4j.LoggerFactory; | 
|   | 
| import com.panzhihua.common.constants.Constants; | 
| import com.panzhihua.common.model.dtos.wx.WxSubscribeDTO; | 
|   | 
| /** | 
|  * 通用http发送方法 | 
|  *  | 
|  * @author ruoyi | 
|  */ | 
| public class HttpUtils { | 
|     private static final Logger log = LoggerFactory.getLogger(HttpUtils.class); | 
|   | 
|     /** | 
|      * 向指定 URL 发送GET方法的请求 | 
|      * | 
|      * @param url | 
|      *            发送请求的 URL | 
|      * @param param | 
|      *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 | 
|      * @return 所代表远程资源的响应结果 | 
|      */ | 
|     public static String sendGet(String url, String param) { | 
|         return sendGet(url, param, Constants.UTF8); | 
|     } | 
|   | 
|     /** | 
|      * 向指定 URL 发送GET方法的请求 | 
|      * | 
|      * @param url | 
|      *            发送请求的 URL | 
|      * @param param | 
|      *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 | 
|      * @param contentType | 
|      *            编码类型 | 
|      * @return 所代表远程资源的响应结果 | 
|      */ | 
|     public static String sendGet(String url, String param, String contentType) { | 
|         StringBuilder result = new StringBuilder(); | 
|         BufferedReader in = null; | 
|         try { | 
|             String urlNameString = url + "?" + param; | 
| //            log.info("sendGet - {}", urlNameString); | 
|             URL realUrl = new URL(urlNameString); | 
|             URLConnection connection = realUrl.openConnection(); | 
|             connection.setRequestProperty("accept", "*/*"); | 
|             connection.setRequestProperty("connection", "Keep-Alive"); | 
|             connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); | 
|             connection.connect(); | 
|             in = new BufferedReader(new InputStreamReader(connection.getInputStream(), contentType)); | 
|             String line; | 
|             while ((line = in.readLine()) != null) { | 
|                 result.append(line); | 
|             } | 
| //            log.info("recv - {}", result); | 
|         } catch (ConnectException e) { | 
|             log.error("调用HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e); | 
|         } catch (SocketTimeoutException e) { | 
|             log.error("调用HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e); | 
|         } catch (IOException e) { | 
|             log.error("调用HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e); | 
|         } catch (Exception e) { | 
|             log.error("调用HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e); | 
|         } finally { | 
|             try { | 
|                 if (in != null) { | 
|                     in.close(); | 
|                 } | 
|             } catch (Exception ex) { | 
|                 log.error("调用in.close Exception, url=" + url + ",param=" + param, ex); | 
|             } | 
|         } | 
|         return result.toString(); | 
|     } | 
|   | 
|     public static String wxMessageModeSendUrl(String token, WxSubscribeDTO subscribeDTO) throws Exception { | 
|         String tmpurl = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN"; | 
|         String url = tmpurl.replace("ACCESS_TOKEN", token); | 
|         return HttpClientUtil.httpPost(url, subscribeDTO.toJSON()); | 
|     } | 
|   | 
|     public static String sendSSLPost(String url, String param) { | 
|         StringBuilder result = new StringBuilder(); | 
|         String urlNameString = url + "?" + param; | 
|         try { | 
|             log.info("sendSSLPost - {}", urlNameString); | 
|             SSLContext sc = SSLContext.getInstance("SSL"); | 
|             sc.init(null, new TrustManager[] {new TrustAnyTrustManager()}, new java.security.SecureRandom()); | 
|             URL console = new URL(urlNameString); | 
|             HttpsURLConnection conn = (HttpsURLConnection)console.openConnection(); | 
|             conn.setRequestProperty("accept", "*/*"); | 
|             conn.setRequestProperty("connection", "Keep-Alive"); | 
|             conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); | 
|             conn.setRequestProperty("Accept-Charset", "utf-8"); | 
|             conn.setRequestProperty("contentType", "utf-8"); | 
|             conn.setDoOutput(true); | 
|             conn.setDoInput(true); | 
|   | 
|             conn.setSSLSocketFactory(sc.getSocketFactory()); | 
|             conn.setHostnameVerifier(new TrustAnyHostnameVerifier()); | 
|             conn.connect(); | 
|             InputStream is = conn.getInputStream(); | 
|             BufferedReader br = new BufferedReader(new InputStreamReader(is)); | 
|             String ret = ""; | 
|             while ((ret = br.readLine()) != null) { | 
|                 if (ret != null && !"".equals(ret.trim())) { | 
|                     result.append(new String(ret.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8)); | 
|                 } | 
|             } | 
|             log.info("recv - {}", result); | 
|             conn.disconnect(); | 
|             br.close(); | 
|         } catch (ConnectException e) { | 
|             log.error("调用HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param, e); | 
|         } catch (SocketTimeoutException e) { | 
|             log.error("调用HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param, e); | 
|         } catch (IOException e) { | 
|             log.error("调用HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param, e); | 
|         } catch (Exception e) { | 
|             log.error("调用HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param, e); | 
|         } | 
|         return result.toString(); | 
|     } | 
|   | 
|     private static class TrustAnyTrustManager implements X509TrustManager { | 
|         @Override | 
|         public void checkClientTrusted(X509Certificate[] chain, String authType) {} | 
|   | 
|         @Override | 
|         public void checkServerTrusted(X509Certificate[] chain, String authType) {} | 
|   | 
|         @Override | 
|         public X509Certificate[] getAcceptedIssuers() { | 
|             return new X509Certificate[] {}; | 
|         } | 
|     } | 
|   | 
|     private static class TrustAnyHostnameVerifier implements HostnameVerifier { | 
|         @Override | 
|         public boolean verify(String hostname, SSLSession session) { | 
|             return true; | 
|         } | 
|     } | 
| } |