HttpUtil.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. package com.zfire.jiasm.syncdata.http;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.zfire.jiasm.syncdata.helper.GreeResponseHelperOther;
  5. import com.zfire.jiasm.syncdata.helper.ResponseHelper;
  6. import lombok.extern.slf4j.Slf4j;
  7. import org.apache.http.HttpEntity;
  8. import org.apache.http.HttpResponse;
  9. import org.apache.http.NameValuePair;
  10. import org.apache.http.client.config.RequestConfig;
  11. import org.apache.http.client.entity.UrlEncodedFormEntity;
  12. import org.apache.http.client.methods.CloseableHttpResponse;
  13. import org.apache.http.client.methods.HttpPost;
  14. import org.apache.http.client.methods.HttpUriRequest;
  15. import org.apache.http.client.methods.RequestBuilder;
  16. import org.apache.http.entity.StringEntity;
  17. import org.apache.http.impl.client.CloseableHttpClient;
  18. import org.apache.http.impl.client.HttpClientBuilder;
  19. import org.apache.http.impl.client.HttpClients;
  20. import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
  21. import org.apache.http.message.BasicNameValuePair;
  22. import org.apache.http.protocol.HTTP;
  23. import org.apache.http.util.EntityUtils;
  24. import org.springframework.web.client.HttpStatusCodeException;
  25. import java.io.IOException;
  26. import java.nio.charset.Charset;
  27. import java.util.ArrayList;
  28. import java.util.List;
  29. import java.util.Map;
  30. @Slf4j
  31. public class HttpUtil {
  32. private static PoolingHttpClientConnectionManager connectionManager = null;
  33. private static HttpClientBuilder httpBuilder = null;
  34. private static RequestConfig requestConfig = null;
  35. /**
  36. * 最大连接连接数量
  37. */
  38. private static int MAX_CONNECTION = 100;
  39. /**
  40. * 最大并发请求数量
  41. */
  42. private static int DEFAULT_MAX_CONNECTION = 50;
  43. static {
  44. //设置http的状态参数
  45. requestConfig = RequestConfig.custom()
  46. .setSocketTimeout(10000)
  47. .setConnectTimeout(10000)
  48. .setConnectionRequestTimeout(10000)
  49. .build();
  50. connectionManager = new PoolingHttpClientConnectionManager();
  51. connectionManager.setMaxTotal(MAX_CONNECTION);
  52. connectionManager.setDefaultMaxPerRoute(DEFAULT_MAX_CONNECTION);
  53. httpBuilder = HttpClients.custom();
  54. httpBuilder.setConnectionManager(connectionManager);
  55. }
  56. /**
  57. * 获取http客户端连接
  58. *
  59. * @return http客户端连接
  60. */
  61. public static CloseableHttpClient getConnection() {
  62. return httpBuilder.build();
  63. }
  64. /**
  65. * http post请求,利用http请求池
  66. *
  67. * @param url 请求url
  68. * @param paramsMap 请求参数
  69. * @return 请求结果
  70. * @throws Exception 异常
  71. */
  72. public static String httpPost(String url, Map<String, String> paramsMap) throws Exception {
  73. List<NameValuePair> params = new ArrayList<>();
  74. for (Map.Entry<String, String> e : paramsMap.entrySet()) {
  75. NameValuePair pair = new BasicNameValuePair(e.getKey(), e.getValue());
  76. params.add(pair);
  77. }
  78. HttpUriRequest postMethod = RequestBuilder.post().setUri(url)
  79. .addParameters(params.toArray(new BasicNameValuePair[params.size()]))
  80. .setConfig(requestConfig).build();
  81. HttpResponse response = getConnection().execute(postMethod);
  82. return EntityUtils.toString(response.getEntity());
  83. }
  84. /**
  85. * http post请求,利用http请求池
  86. *
  87. * @param url 请求url
  88. * @param jsonStr json字符串
  89. * @return 请求结果
  90. * @throws Exception 异常
  91. */
  92. public static String httpPostJson(String url, String jsonStr) throws Exception {
  93. HttpUriRequest postMethod = RequestBuilder.post().setUri(url)
  94. .setHeader("Content-Type", "application/json;charset=utf-8")
  95. .setHeader("Accept", "application/json")
  96. .setEntity(new StringEntity(jsonStr, Charset.forName("UTF-8")))
  97. .setConfig(requestConfig).build();
  98. HttpResponse response = getConnection().execute(postMethod);
  99. return EntityUtils.toString(response.getEntity());
  100. }
  101. /**
  102. * http get请求,利用http请求池
  103. *
  104. * @param url 请求url
  105. * @return 请求结果
  106. * @throws Exception 异常
  107. */
  108. public static Map<String, Object> httpGet(String url) throws Exception {
  109. HttpUriRequest getMethod = RequestBuilder.get().setUri(url)
  110. .setConfig(requestConfig).build();
  111. log.info("url :{}" + url);
  112. HttpResponse response = getConnection().execute(getMethod);
  113. Map<String, Object> result = JSON.parseObject(EntityUtils.toString(response.getEntity()));
  114. log.info("httpGet result :" + response.getEntity());
  115. return result;
  116. }
  117. public static GreeResponseHelperOther httpGetInfo(String url,String token) throws Exception {
  118. try {
  119. HttpUriRequest getMethod = RequestBuilder.get().setUri(url)
  120. .setHeader("authorization","Bearer "+token)
  121. .setConfig(requestConfig).build();
  122. HttpResponse response = getConnection().execute(getMethod);
  123. String body = EntityUtils.toString(response.getEntity());
  124. return JSONObject.parseObject(body, GreeResponseHelperOther.class);
  125. }catch(HttpStatusCodeException ex) {
  126. log.error("rawStatusCode = {}",ex.getRawStatusCode());
  127. GreeResponseHelperOther greeResponseHelper = new GreeResponseHelperOther();
  128. greeResponseHelper.setStatusCode(ex.getRawStatusCode());
  129. greeResponseHelper.setMessage(ex.getMessage());
  130. ex.printStackTrace();
  131. return greeResponseHelper;
  132. }catch(Exception e){
  133. GreeResponseHelperOther greeResponseHelper = new GreeResponseHelperOther();
  134. greeResponseHelper.setStatusCode(ResponseHelper.ResponseCode_COMMON);
  135. greeResponseHelper.setMessage("非法请求");
  136. e.printStackTrace();
  137. return greeResponseHelper;
  138. }
  139. }
  140. public static GreeResponseHelperOther sendData(String url, String token) {
  141. CloseableHttpClient httpClient;
  142. HttpPost httpPost = null;
  143. org.apache.http.HttpEntity entity;
  144. long interval = System.currentTimeMillis();
  145. String resStr="";
  146. JSONObject json = new JSONObject();
  147. try {
  148. httpClient = HttpClients.createDefault();
  149. httpPost = new HttpPost(url);
  150. RequestConfig reqconfig = RequestConfig.custom()
  151. .setConnectTimeout(60 * 1000)
  152. .setConnectionRequestTimeout(60 * 1000)
  153. .setSocketTimeout(60 * 1000).build();
  154. httpPost.setConfig(reqconfig);
  155. httpPost.setHeader("authorization","Bearer "+token);
  156. log.info("url :{}" + url);
  157. CloseableHttpResponse response = httpClient.execute(httpPost);
  158. entity = response.getEntity();
  159. resStr = EntityUtils.toString(entity).trim();
  160. EntityUtils.consume(entity);
  161. response.close();
  162. return JSONObject.parseObject(resStr, GreeResponseHelperOther.class);
  163. }catch(HttpStatusCodeException ex) {
  164. log.error("rawStatusCode = {}",ex.getRawStatusCode());
  165. GreeResponseHelperOther greeResponseHelper = new GreeResponseHelperOther();
  166. greeResponseHelper.setStatusCode(ex.getRawStatusCode());
  167. greeResponseHelper.setMessage(ex.getMessage());
  168. ex.printStackTrace();
  169. return greeResponseHelper;
  170. }catch(Exception e){
  171. GreeResponseHelperOther greeResponseHelper = new GreeResponseHelperOther();
  172. greeResponseHelper.setStatusCode(ResponseHelper.ResponseCode_COMMON);
  173. greeResponseHelper.setMessage("非法请求");
  174. e.printStackTrace();
  175. return greeResponseHelper;
  176. } finally {
  177. if (httpPost != null)
  178. httpPost.releaseConnection();
  179. }
  180. }
  181. /**
  182. * http get请求,利用http请求池
  183. *
  184. * @param url 请求url
  185. * @param paramsMap 请求参数
  186. * @return 请求结果
  187. * @throws Exception 异常
  188. */
  189. public static String httpGet(String url, Map<String, String> paramsMap) throws Exception {
  190. List<NameValuePair> params = new ArrayList<>();
  191. for (Map.Entry<String, String> e : paramsMap.entrySet()) {
  192. NameValuePair pair = new BasicNameValuePair(e.getKey(), e.getValue());
  193. params.add(pair);
  194. }
  195. HttpUriRequest getMethod = RequestBuilder.get().setUri(url)
  196. .addParameters(params.toArray(new BasicNameValuePair[params.size()]))
  197. .setConfig(requestConfig).build();
  198. HttpResponse response = getConnection().execute(getMethod);
  199. return EntityUtils.toString(response.getEntity());
  200. }
  201. /**
  202. * http post 请求,每次创建请求客户端
  203. *
  204. * @param url url
  205. * @param params 请求参数
  206. * @return 请求返回值
  207. */
  208. public static String httpPostNoPool(String url, Map<String, String> params) {
  209. CloseableHttpClient closeableHttpClient = null;
  210. try {
  211. HttpPost httpPost = new HttpPost(url);
  212. if (params != null) {
  213. List<NameValuePair> form = new ArrayList<>();
  214. for (String name : params.keySet()) {
  215. form.add(new BasicNameValuePair(name, params.get(name)));
  216. }
  217. httpPost.setEntity(new UrlEncodedFormEntity(form, HTTP.UTF_8));
  218. }
  219. closeableHttpClient = HttpClients.createDefault();
  220. CloseableHttpResponse httpResponse = closeableHttpClient.execute(httpPost);
  221. HttpEntity entry = httpResponse.getEntity();
  222. return EntityUtils.toString(entry);
  223. } catch (Exception e) {
  224. log.error("HttpUtil.httpPost failed!", e);
  225. } finally {
  226. if (null != closeableHttpClient) {
  227. try {
  228. closeableHttpClient.close();
  229. } catch (IOException e) {
  230. log.error("closeableHttpClient.close failed!", e);
  231. }
  232. }
  233. }
  234. return null;
  235. }
  236. }