| package com.ruoyi.common.core.utils; | 
|   | 
| import com.ruoyi.common.core.exception.ServiceException; | 
| import com.ruoyi.common.utils.StringUtils; | 
| import org.slf4j.Logger; | 
| import org.slf4j.LoggerFactory; | 
|   | 
| import javax.net.ssl.*; | 
| import java.io.*; | 
| import java.net.*; | 
| import java.nio.charset.StandardCharsets; | 
| import java.security.cert.X509Certificate; | 
|   | 
| /** | 
|  * 通用http发送方法 | 
|  *  | 
|  * @author ruoyi | 
|  */ | 
| public class HttpUtils | 
| { | 
|     private static final Logger log = LoggerFactory.getLogger(HttpUtils.class); | 
|   | 
|     /** | 
|      * 向指定 URL 发送GET方法的请求 | 
|      * | 
|      * @param url 发送请求的 URL | 
|      * @return 所代表远程资源的响应结果 | 
|      */ | 
|     public static String sendGet(String url) | 
|     { | 
|         return sendGet(url, StringUtils.EMPTY); | 
|     } | 
|   | 
|     /** | 
|      * 向指定 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 = StringUtils.isNotBlank(param) ? url + "?" + param : url; | 
|             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(); | 
|     } | 
|   | 
|     /** | 
|      * 向指定 URL 发送POST方法的请求 | 
|      * | 
|      * @param url 发送请求的 URL | 
|      * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 | 
|      * @return 所代表远程资源的响应结果 | 
|      */ | 
|     public static String sendPost(String url, String param) | 
|     { | 
|         PrintWriter out = null; | 
|         BufferedReader in = null; | 
|         StringBuilder result = new StringBuilder(); | 
|         try | 
|         { | 
|             log.info("sendPost - {}", url); | 
|             URL realUrl = new URL(url); | 
|             URLConnection conn = realUrl.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); | 
|             out = new PrintWriter(conn.getOutputStream()); | 
|             out.print(param); | 
|             out.flush(); | 
|             in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8)); | 
|             String line; | 
|             while ((line = in.readLine()) != null) | 
|             { | 
|                 result.append(line); | 
|             } | 
|             log.info("recv - {}", result); | 
|         } | 
|         catch (ConnectException e) | 
|         { | 
|             log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e); | 
|         } | 
|         catch (SocketTimeoutException e) | 
|         { | 
|             log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e); | 
|         } | 
|         catch (IOException e) | 
|         { | 
|             log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e); | 
|         } | 
|         catch (Exception e) | 
|         { | 
|             log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e); | 
|         } | 
|         finally | 
|         { | 
|             try | 
|             { | 
|                 if (out != null) | 
|                 { | 
|                     out.close(); | 
|                 } | 
|                 if (in != null) | 
|                 { | 
|                     in.close(); | 
|                 } | 
|             } | 
|             catch (IOException ex) | 
|             { | 
|                 log.error("调用in.close Exception, url=" + url + ",param=" + param, ex); | 
|             } | 
|         } | 
|         return result.toString(); | 
|     } | 
|   | 
|     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(); | 
|     } | 
|   | 
|     public static String post(String strURL, String params) { | 
|         String result = ""; | 
|         BufferedReader reader = null; | 
|         try { | 
|             URL url = new URL(strURL);// 创建连接 | 
|             HttpURLConnection connection = (HttpURLConnection) url | 
|                     .openConnection(); | 
|             connection.setDoOutput(true); | 
|             connection.setDoInput(true); | 
|             connection.setUseCaches(false); | 
|             connection.setInstanceFollowRedirects(true); | 
|             connection.setRequestMethod("POST"); // 设置请求方式 | 
|             connection.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式 | 
|             connection.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的格式 | 
|             connection.connect(); | 
|             if (params != null && !StringUtils.isEmpty(params)) { | 
|                 byte[] writebytes = params.getBytes(); | 
|                 // 设置文件长度 | 
|                 //   connection.setRequestProperty("Content-Length", String.valueOf(writebytes.length)); | 
|                 OutputStream outwritestream = connection.getOutputStream(); | 
|                 outwritestream.write(params.getBytes()); | 
|                 outwritestream.flush(); | 
|                 outwritestream.close(); | 
|                 // Log.d("hlhupload", "doJsonPost: conn"+connection.getResponseCode()); | 
|             } | 
|             if (connection.getResponseCode() == 200) { | 
|                 log.info("<<<<<<<<<<<<<请求响应:{}", connection.getResponseMessage()); | 
|                 reader = new BufferedReader( | 
|                         new InputStreamReader(connection.getInputStream())); | 
|                 result = reader.readLine(); | 
|                 log.info("<<<<<<<<<<<<<请求响应:{}", result); | 
|             } else { | 
|                 throw new ServiceException(connection.getResponseMessage()); | 
|             } | 
|         } catch (Exception e) { | 
|             throw new ServiceException("http的post请求异常!" + e.getMessage()); | 
|         } finally { | 
|             if (reader != null) { | 
|                 try { | 
|                     reader.close(); | 
|                 } catch (IOException e) { | 
|                     e.printStackTrace(); | 
|                 } | 
|             } | 
|         } | 
|         return result; | 
|     } | 
|   | 
|     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; | 
|         } | 
|     } | 
| } |