gistfile1.txt package common;import com.google.gson.Gson;import com.google.gson.GsonBuilder;import org.apache.http.HttpEntity;import org.apache.http.client.config.RequestConfig;import org.apache.http.client.methods.*;import org.apache.http.
package common; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import org.apache.http.HttpEntity; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.*; import org.apache.http.client.utils.URIBuilder; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; import java.io.IOException; import java.net.URISyntaxException; import java.nio.charset.Charset; import java.util.Map; /** * Created by hx-pc on 17-5-25. */ public class HttpClientUtil { private static final Gson gson = new GsonBuilder().create(); public staticT get(String url, Map param, Class responseClass) throws IOException, URISyntaxException { URIBuilder uriBuilder = getUriBuild(url); if (param != null) { for (Map.Entry entry : param.entrySet()) { uriBuilder = uriBuilder.setParameter(entry.getKey().toString(), entry.getValue().toString()); } } HttpGet httpGet = new HttpGet(uriBuilder.build()); return doRequest(responseClass, httpGet); } public static T post(String url, Map param, Class responseClass) throws IOException, URISyntaxException { URIBuilder uriBuilder = getUriBuild(url); HttpPost httpPost = new HttpPost(uriBuilder.build()); if (param != null) { StringEntity stringEntity = new StringEntity(gson.toJson(param), Charset.defaultCharset()); stringEntity.setContentType("application/json;charset=UTF-8"); stringEntity.setContentEncoding("UTF-8"); httpPost.setEntity(stringEntity); } return doRequest(responseClass, httpPost); } public static T delete(String url, Map param, Class responseClass) throws IOException, URISyntaxException { URIBuilder uriBuilder = getUriBuild(url); if (param != null) { for (Map.Entry entry : param.entrySet()) { uriBuilder = uriBuilder.setParameter(entry.getKey().toString(), entry.getValue().toString()); } } HttpDelete httpDelete = new HttpDelete(uriBuilder.build()); return doRequest(responseClass, httpDelete); } public static T put(String url, Map param, Class responseClass) throws IOException, URISyntaxException { URIBuilder uriBuilder = getUriBuild(url); HttpPut httpPut = new HttpPut(uriBuilder.build()); if (param != null) { StringEntity stringEntity = new StringEntity(gson.toJson(param), Charset.defaultCharset()); stringEntity.setContentType("application/json;charset=UTF-8"); stringEntity.setContentEncoding("UTF-8"); httpPut.setEntity(stringEntity); } return doRequest(responseClass, httpPut); } private static T doRequest(Class responseClass, HttpRequestBase httpRequestBase) throws IOException, URISyntaxException { CloseableHttpClient httpclient = getHttpClient(); httpRequestBase = buildHeader(httpRequestBase); return getResponse(responseClass, httpclient, httpRequestBase); } private static HttpRequestBase buildHeader(HttpRequestBase httpRequestBase) { httpRequestBase.addHeader("Content-Type","application/json;charset=UTF-8"); return httpRequestBase; } private static CloseableHttpClient getHttpClient() { RequestConfig defaultRequestConfig = RequestConfig.custom() .setConnectTimeout(1000) .setSocketTimeout(120*1000) .build(); return HttpClientBuilder.create().setDefaultRequestConfig(defaultRequestConfig).build(); } private static T getResponse(Class responseClass, CloseableHttpClient httpclient, HttpRequestBase httpRequestBase) throws IOException { CloseableHttpResponse response = httpclient.execute(httpRequestBase); HttpEntity entity = response.getEntity(); String body = EntityUtils.toString(entity); EntityUtils.consume(entity); response.addHeader("Content-Type","application/json;charset=UTF-8"); response.close(); return gson.fromJson(body, responseClass); } private static URIBuilder getUriBuild(String url) throws URISyntaxException { return new URIBuilder().setScheme("http").setHost("127.0.0.1").setPort(8080).setPath(url); } }