package com.docus.bgts.utils; import com.alibaba.fastjson.JSON; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.*; import org.apache.http.client.utils.URIBuilder; import org.apache.http.entity.ContentType; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Map; public class HttpUtils { private static PoolingHttpClientConnectionManager cm; private static String EMPTY_STR = ""; private static String UTF_8 = "UTF-8"; private static void init() { if (cm == null) { cm = new PoolingHttpClientConnectionManager(); cm.setMaxTotal(50);// 整个连接池最大连接数 cm.setDefaultMaxPerRoute(5);// 每路由最大连接数,默认值是2 } } /** * 通过连接池获取HttpClient * * @return */ private static CloseableHttpClient getHttpClient() { init(); return HttpClients.custom().setConnectionManager(cm).build(); } /** * @param url * @return */ public static String get(String url) { HttpGet httpGet = new HttpGet(url); return getResult(httpGet); } /** * @param url、params * @return */ public static String get(String url, Map params) throws URISyntaxException { URIBuilder ub = new URIBuilder(); ub.setPath(url); ArrayList pairs = covertParams2NVPS(params); ub.setParameters(pairs); HttpGet httpGet = new HttpGet(ub.build()); return getResult(httpGet); } /** * @param url、headers、params * @return */ public static String get(String url, Map headers, Map params) throws URISyntaxException { URIBuilder ub = new URIBuilder(); ub.setPath(url); if (params != null) { ArrayList pairs = covertParams2NVPS(params); ub.setParameters(pairs); } HttpGet httpGet = new HttpGet(ub.build()); for (Map.Entry param : headers.entrySet()) { httpGet.addHeader(param.getKey(), String.valueOf(param.getValue())); } return getResult(httpGet); } /** * @param url * @return */ public static String post(String url) { HttpPost httpPost = new HttpPost(url); return getResult(httpPost); } /** * @param url、params * @return */ public static String post(String url, Map params) throws UnsupportedEncodingException { HttpPost httpPost = new HttpPost(url); httpPost.setEntity(new UrlEncodedFormEntity(covertParams2NVPS(params), "utf-8"));//设置表单提交编码 // httpPost.setEntity(new StringEntity(JSON.toJSONString(params), ContentType.APPLICATION_FORM_URLENCODED)); return getResult(httpPost); } public static String post(String url, Object params, Map head) throws UnsupportedEncodingException { HttpPost httpPost = new HttpPost(url); System.out.println(params); httpPost.setEntity(new StringEntity(params.toString()));//设置表单提交编码 if (params != null) { for (Map.Entry param : head.entrySet()) { httpPost.addHeader(param.getKey(), String.valueOf(param.getValue())); } } // httpPost.setEntity(new StringEntity(JSON.toJSONString(params), ContentType.APPLICATION_FORM_URLENCODED)); return getResult(httpPost); } private static ArrayList covertParams2NVPS(Map params) { ArrayList pairs = new ArrayList(); for (Map.Entry param : params.entrySet()) { if (param.getValue() != null) { pairs.add(new BasicNameValuePair(param.getKey(), param.getValue())); } } return pairs; } /** * @param url、headers、params * @return */ public static String post(String url, Map headers, Map params) throws UnsupportedEncodingException { HttpPost httpPost = new HttpPost(url); System.out.println(params); if (params != null) { for (Map.Entry param : headers.entrySet()) { httpPost.addHeader(param.getKey(), String.valueOf(param.getValue())); } } httpPost.setEntity(new StringEntity(JSON.toJSONString(params), ContentType.APPLICATION_JSON)); return getResult(httpPost); } /** * 处理Http请求 * * @param request * @return */ private static String getResult(HttpRequestBase request) { // CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpClient httpClient = getHttpClient(); try { CloseableHttpResponse response = httpClient.execute(request); // response.getStatusLine().getStatusCode(); HttpEntity entity = response.getEntity(); if (entity != null) { // long len = entity.getContentLength();// -1 表示长度未知 String result = EntityUtils.toString(entity, UTF_8); response.close(); // httpClient.close(); return result; } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { } return EMPTY_STR; } /** * 处理Http请求 * * @param requestBuilder * @return */ private static String getResult(RequestBuilder requestBuilder) { // CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpClient httpClient = getHttpClient(); try { CloseableHttpResponse response = httpClient.execute(requestBuilder.build()); // response.getStatusLine().getStatusCode(); HttpEntity entity = response.getEntity(); if (entity != null) { // long len = entity.getContentLength();// -1 表示长度未知 String result = EntityUtils.toString(entity, UTF_8); response.close(); // httpClient.close(); return result; } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { } return EMPTY_STR; } }