|
@@ -0,0 +1,473 @@
|
|
|
|
|
+package com.usthe.collector.collect.common.http;
|
|
|
|
|
+
|
|
|
|
|
+import com.fasterxml.jackson.core.JsonParser;
|
|
|
|
|
+import com.fasterxml.jackson.core.type.TypeReference;
|
|
|
|
|
+import com.fasterxml.jackson.databind.DeserializationFeature;
|
|
|
|
|
+import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
|
+import com.fasterxml.jackson.databind.PropertyNamingStrategy;
|
|
|
|
|
+import com.google.common.base.Charsets;
|
|
|
|
|
+import com.google.common.base.Strings;
|
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
+import org.apache.commons.io.IOUtils;
|
|
|
|
|
+import org.apache.http.*;
|
|
|
|
|
+import org.apache.http.client.HttpClient;
|
|
|
|
|
+import org.apache.http.client.ResponseHandler;
|
|
|
|
|
+import org.apache.http.client.config.RequestConfig;
|
|
|
|
|
+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.HttpClientBuilder;
|
|
|
|
|
+import org.apache.http.impl.client.HttpClients;
|
|
|
|
|
+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
|
|
|
|
|
+import org.apache.http.message.BasicNameValuePair;
|
|
|
|
|
+import org.apache.http.protocol.HTTP;
|
|
|
|
|
+import org.apache.http.util.EntityUtils;
|
|
|
|
|
+import org.slf4j.Logger;
|
|
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
|
|
+
|
|
|
|
|
+import java.io.IOException;
|
|
|
|
|
+import java.io.InputStream;
|
|
|
|
|
+import java.io.InputStreamReader;
|
|
|
|
|
+import java.io.UnsupportedEncodingException;
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
|
+import java.util.HashMap;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+import java.util.Map;
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * Http各种请求方法的实现
|
|
|
|
|
+ *
|
|
|
|
|
+ * @author 花城
|
|
|
|
|
+ * @version 1.0
|
|
|
|
|
+ * @date 2022/2/21 7:16 下午
|
|
|
|
|
+ * @Description
|
|
|
|
|
+ */
|
|
|
|
|
+@Slf4j
|
|
|
|
|
+public class HttpUtils {
|
|
|
|
|
+ private static final Logger LOGGER = LoggerFactory.getLogger(HttpUtils.class);
|
|
|
|
|
+
|
|
|
|
|
+ private CloseableHttpClient httpClient;
|
|
|
|
|
+ //连接超时时间为30s
|
|
|
|
|
+ private int connectionTimeout = 30000;
|
|
|
|
|
+ //读取超时时间为300s
|
|
|
|
|
+ private int socketTimeout = 300000;
|
|
|
|
|
+ private int MAX_TOTAL = 3000;
|
|
|
|
|
+ //单路由的最大并发连接数
|
|
|
|
|
+ private int MAX_PER_ROUTE = 1000;
|
|
|
|
|
+ //设置从链接池中获取连接时间为无限大
|
|
|
|
|
+ private int CONNECTION_REQUEST_TIMEOUT = 0;
|
|
|
|
|
+
|
|
|
|
|
+ private static ObjectMapper objectMapper;
|
|
|
|
|
+
|
|
|
|
|
+ static {
|
|
|
|
|
+ objectMapper = new ObjectMapper();
|
|
|
|
|
+ // asr返回格式为命名用下划线格式,java为驼峰式,json需要转换
|
|
|
|
|
+// objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES);
|
|
|
|
|
+ objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
|
|
|
|
|
+
|
|
|
|
|
+ objectMapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false);
|
|
|
|
|
+ objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
|
|
|
|
+ objectMapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false);
|
|
|
|
|
+ objectMapper.configure(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES, false);
|
|
|
|
|
+ objectMapper.configure(DeserializationFeature.FAIL_ON_NUMBERS_FOR_ENUMS, false);
|
|
|
|
|
+ objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
|
|
|
|
|
+ objectMapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public void init() {
|
|
|
|
|
+ RequestConfig config = RequestConfig.custom().setConnectTimeout(connectionTimeout).
|
|
|
|
|
+ setConnectionRequestTimeout(CONNECTION_REQUEST_TIMEOUT).setSocketTimeout(socketTimeout).build();
|
|
|
|
|
+ PoolingHttpClientConnectionManager pccm = new PoolingHttpClientConnectionManager();
|
|
|
|
|
+ pccm.setMaxTotal(MAX_TOTAL);
|
|
|
|
|
+ pccm.setDefaultMaxPerRoute(MAX_PER_ROUTE);
|
|
|
|
|
+ httpClient = HttpClients.custom().setConnectionManager(pccm).setDefaultRequestConfig(config).build();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public HttpResult doGet(String url, Map<String, String> params) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ URIBuilder uriBuilder = new URIBuilder(url);
|
|
|
|
|
+ for (Map.Entry<String, String> entry : params.entrySet()) {
|
|
|
|
|
+ uriBuilder.addParameter(entry.getKey(), entry.getValue());
|
|
|
|
|
+ }
|
|
|
|
|
+ HttpGet httpget = new HttpGet(uriBuilder.build());
|
|
|
|
|
+ httpget.addHeader("contentEncoding", "UTF-8");
|
|
|
|
|
+ return doExecuteHttpRqeuestBase(httpget);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ LOGGER.error("Error when doGet : " + url, e);
|
|
|
|
|
+ return failHttp(e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public HttpResult doGetWithHeaders(String url, Map<String, String> params, Map<String, String> headers) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ URIBuilder uriBuilder = new URIBuilder(url);
|
|
|
|
|
+ params.forEach(uriBuilder::addParameter);
|
|
|
|
|
+ HttpGet httpget = new HttpGet(uriBuilder.build());
|
|
|
|
|
+ httpget.addHeader("contentEncoding", "UTF-8");
|
|
|
|
|
+ headers.forEach(httpget::addHeader);
|
|
|
|
|
+ return doExecuteHttpRqeuestBase(httpget);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ LOGGER.error("Error when doGet : " + url, e);
|
|
|
|
|
+ return failHttp(e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public HttpResult doPutWithHeaders(String url, Map<String, String> params, Map<String, String> headers) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ URIBuilder uriBuilder = new URIBuilder(url);
|
|
|
|
|
+ params.forEach(uriBuilder::addParameter);
|
|
|
|
|
+ HttpPut httpget = new HttpPut(uriBuilder.build());
|
|
|
|
|
+ httpget.addHeader("contentEncoding", "UTF-8");
|
|
|
|
|
+ headers.forEach(httpget::addHeader);
|
|
|
|
|
+ return doExecuteHttpRqeuestBase(httpget);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ LOGGER.error("Error when doPut : " + url, e);
|
|
|
|
|
+ return failHttp(e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public HttpResult doPost(String url, Map<String, String> formParams) {
|
|
|
|
|
+ // 创建httppost
|
|
|
|
|
+ HttpPost httpPost = new HttpPost(url);
|
|
|
|
|
+ // 设置参数
|
|
|
|
|
+ RequestConfig.Builder customReqConf = RequestConfig.custom();
|
|
|
|
|
+ customReqConf.setConnectTimeout(connectionTimeout);
|
|
|
|
|
+ customReqConf.setSocketTimeout(socketTimeout);
|
|
|
|
|
+ httpPost.setConfig(customReqConf.build());
|
|
|
|
|
+
|
|
|
|
|
+ List<NameValuePair> formparams = new ArrayList<NameValuePair>();
|
|
|
|
|
+ for (Map.Entry<String, String> entry : formParams.entrySet()) {
|
|
|
|
|
+ formparams.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
|
|
|
|
|
+ }
|
|
|
|
|
+ UrlEncodedFormEntity entity = null;
|
|
|
|
|
+ try {
|
|
|
|
|
+ entity = new UrlEncodedFormEntity(formparams, "UTF-8");
|
|
|
|
|
+ entity.setChunked(true);
|
|
|
|
|
+ } catch (UnsupportedEncodingException e) {
|
|
|
|
|
+ LOGGER.error("UrlEncode error : " + url, e);
|
|
|
|
|
+ }
|
|
|
|
|
+ httpPost.setEntity(entity);
|
|
|
|
|
+ return doExecuteHttpRqeuestBase(httpPost);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public HttpResult doPostWithHeader(String url, String bodyJsonString, Map<String, String> headers) {
|
|
|
|
|
+ // 创建httppost
|
|
|
|
|
+ HttpPost httpPost = new HttpPost(url);
|
|
|
|
|
+
|
|
|
|
|
+ // 设置参数
|
|
|
|
|
+ RequestConfig.Builder customReqConf = RequestConfig.custom();
|
|
|
|
|
+ customReqConf.setConnectTimeout(connectionTimeout);
|
|
|
|
|
+ customReqConf.setSocketTimeout(socketTimeout);
|
|
|
|
|
+ httpPost.setConfig(customReqConf.build());
|
|
|
|
|
+ headers.forEach(httpPost::addHeader);
|
|
|
|
|
+ StringEntity entity = new StringEntity(bodyJsonString, "UTF-8");//解决中文乱码问题
|
|
|
|
|
+ entity.setContentEncoding("UTF-8");
|
|
|
|
|
+ entity.setContentType(ContentType.APPLICATION_JSON.toString());
|
|
|
|
|
+ httpPost.setEntity(entity);
|
|
|
|
|
+ return doExecuteHttpRqeuestBase(httpPost);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public HttpResponse doPostWithOriginalResponse(String url, List<NameValuePair> nvpList, String charset) {
|
|
|
|
|
+ HttpResponse response = null;
|
|
|
|
|
+ try{
|
|
|
|
|
+ HttpPost httpPost = new HttpPost(url);
|
|
|
|
|
+ httpPost.setHeader(HttpHeaders.CONNECTION, "close");
|
|
|
|
|
+ httpPost.setEntity(new UrlEncodedFormEntity(nvpList,charset));
|
|
|
|
|
+ response = httpClient.execute(httpPost);
|
|
|
|
|
+ }catch (Exception e){
|
|
|
|
|
+ LOGGER.error("doPostWithOriginalResponse error : ", e);
|
|
|
|
|
+ }
|
|
|
|
|
+ return response;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public HttpResult doPost(String url, String bodyJsonString) {
|
|
|
|
|
+ // 创建httppost
|
|
|
|
|
+ HttpPost httpPost = new HttpPost(url);
|
|
|
|
|
+
|
|
|
|
|
+ // 设置参数
|
|
|
|
|
+ RequestConfig.Builder customReqConf = RequestConfig.custom();
|
|
|
|
|
+ customReqConf.setConnectTimeout(connectionTimeout);
|
|
|
|
|
+ customReqConf.setSocketTimeout(socketTimeout);
|
|
|
|
|
+ httpPost.setConfig(customReqConf.build());
|
|
|
|
|
+
|
|
|
|
|
+ StringEntity entity = new StringEntity(bodyJsonString, "UTF-8");//解决中文乱码问题
|
|
|
|
|
+ entity.setContentEncoding("UTF-8");
|
|
|
|
|
+ entity.setContentType(ContentType.APPLICATION_JSON.toString());
|
|
|
|
|
+ httpPost.setEntity(entity);
|
|
|
|
|
+ return doExecuteHttpRqeuestBase(httpPost);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public HttpResult doPostWithEntity(String url, HttpEntity entity) {
|
|
|
|
|
+ // 创建httppost
|
|
|
|
|
+ HttpPost httpPost = new HttpPost(url);
|
|
|
|
|
+
|
|
|
|
|
+ // 设置参数
|
|
|
|
|
+ RequestConfig.Builder customReqConf = RequestConfig.custom();
|
|
|
|
|
+ customReqConf.setConnectTimeout(connectionTimeout);
|
|
|
|
|
+ customReqConf.setSocketTimeout(socketTimeout);
|
|
|
|
|
+ httpPost.setConfig(customReqConf.build());
|
|
|
|
|
+
|
|
|
|
|
+ httpPost.setEntity(entity);
|
|
|
|
|
+ return doExecuteHttpRqeuestBase(httpPost);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public HttpResult doDeleteWithHeaders(String url, Map<String, String> params, Map<String,String> headers) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ URIBuilder uriBuilder = new URIBuilder(url);
|
|
|
|
|
+ params.forEach(uriBuilder::addParameter);
|
|
|
|
|
+ HttpDelete httpDelete = new HttpDelete(uriBuilder.build());
|
|
|
|
|
+ httpDelete.addHeader("contentEncoding", "UTF-8");
|
|
|
|
|
+ headers.forEach(httpDelete::addHeader);
|
|
|
|
|
+ return doExecuteHttpRqeuestBase(httpDelete);
|
|
|
|
|
+
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ LOGGER.error("Error when doDelete : " + url, e);
|
|
|
|
|
+ return failHttp(e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private HttpResult doExecuteHttpRqeuestBase(HttpRequestBase httpRequestBase) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ HttpResultResponseHandler sph = new HttpResultResponseHandler();
|
|
|
|
|
+ return httpClient.execute(httpRequestBase, sph);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ LOGGER.error("Error when " + httpRequestBase.getMethod() + " : " + httpRequestBase.getURI(), e);
|
|
|
|
|
+ return failHttp(e.getMessage());
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ if (httpRequestBase != null) {
|
|
|
|
|
+ httpRequestBase.abort();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 请求体为json格式对象
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param path
|
|
|
|
|
+ * @param form
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public static HttpPost newJsonBodyPostRequest(String path, Map<String, Object> form) {
|
|
|
|
|
+ HttpPost post = new HttpPost(path);
|
|
|
|
|
+ String json = toJsonString(form);
|
|
|
|
|
+ HttpEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);
|
|
|
|
|
+ post.setEntity(entity);
|
|
|
|
|
+ post.addHeader(HttpHeaders.ACCEPT, CONTENT_TYPE);
|
|
|
|
|
+ post.addHeader(HttpHeaders.CONTENT_TYPE, CONTENT_TYPE);
|
|
|
|
|
+ return post;
|
|
|
|
|
+ }
|
|
|
|
|
+ static final String CONTENT_TYPE = "application/json";
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ public static String toJsonString(Object val) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ byte[] bytes = objectMapper.writeValueAsBytes(val);
|
|
|
|
|
+ return new String(bytes, Charsets.UTF_8);
|
|
|
|
|
+ } catch (IOException e) {
|
|
|
|
|
+ throw new RuntimeException("toJsonString error", e);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public static <T> T parseHttpResponseObject(String json, TypeReference<T> type) throws IOException {
|
|
|
|
|
+ if (Strings.isNullOrEmpty(json)) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ return objectMapper.readValue(json, type);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public static String toRequestString(HttpRequestBase r) {
|
|
|
|
|
+ if (r == null) {
|
|
|
|
|
+ return "null";
|
|
|
|
|
+ }
|
|
|
|
|
+ return r.getMethod() + " " + r.getURI();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private class HttpResultResponseHandler implements ResponseHandler<HttpResult> {
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public HttpResult handleResponse(HttpResponse response) throws IOException {
|
|
|
|
|
+ HttpResult result = new HttpResult();
|
|
|
|
|
+ HttpEntity entity = response.getEntity();
|
|
|
|
|
+ Header[] headers = response.getAllHeaders();
|
|
|
|
|
+ if (isNotEmpty(headers)) {
|
|
|
|
|
+ HashMap<String, String> headerMap = new HashMap<String, String>();
|
|
|
|
|
+ for (Header h : headers) {
|
|
|
|
|
+ headerMap.put(h.getName(), h.getValue());
|
|
|
|
|
+ }
|
|
|
|
|
+ result.setHeader(headerMap);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ InputStream i = entity.getContent();
|
|
|
|
|
+ String res = IOUtils.toString(new InputStreamReader(i, "UTF-8"));
|
|
|
|
|
+ result.setCode(response.getStatusLine().getStatusCode());
|
|
|
|
|
+ result.setBody(res);
|
|
|
|
|
+
|
|
|
|
|
+ i.close();
|
|
|
|
|
+
|
|
|
|
|
+ return result;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private boolean isNotEmpty(Object[] array) {
|
|
|
|
|
+ return array != null && array.length > 0;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private HttpResult failHttp(String message) {
|
|
|
|
|
+ HttpResult result = new HttpResult();
|
|
|
|
|
+ result.setCode(500);
|
|
|
|
|
+ result.setBody(message);
|
|
|
|
|
+ return result;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public static class HttpResult {
|
|
|
|
|
+ private String body;
|
|
|
|
|
+ private Map<String, String> header;
|
|
|
|
|
+ private int code;
|
|
|
|
|
+
|
|
|
|
|
+ public String getBody() {
|
|
|
|
|
+ return body;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ void setBody(String body) {
|
|
|
|
|
+ this.body = body;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public Map<String, String> getHeader() {
|
|
|
|
|
+ return header;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ void setHeader(Map<String, String> header) {
|
|
|
|
|
+ this.header = header;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public int getCode() {
|
|
|
|
|
+ return code;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ void setCode(int code) {
|
|
|
|
|
+ this.code = code;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public boolean is200() {
|
|
|
|
|
+ return this.code == 200;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public boolean isNot200() {
|
|
|
|
|
+ return !this.is200();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public HttpResult checkHttpCode() {
|
|
|
|
|
+ if (isNot200()) {
|
|
|
|
|
+ throw new RuntimeException("执行http方法出错,返回值非200,body=" + body);
|
|
|
|
|
+ }
|
|
|
|
|
+ return this;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public void setConnectionTimeout(int connectionTimeout) {
|
|
|
|
|
+ this.connectionTimeout = connectionTimeout;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public void setSocketTimeout(int socketTimeout) {
|
|
|
|
|
+ this.socketTimeout = socketTimeout;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public void setMAX_PER_ROUTE(int MAX_PER_ROUTE) {
|
|
|
|
|
+ this.MAX_PER_ROUTE = MAX_PER_ROUTE;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public void setMAX_TOTAL(int MAX_TOTAL) {
|
|
|
|
|
+ this.MAX_TOTAL = MAX_TOTAL;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public void setCONNECTION_REQUEST_TIMEOUT(int CONNECTION_REQUEST_TIMEOUT) {
|
|
|
|
|
+ this.CONNECTION_REQUEST_TIMEOUT = CONNECTION_REQUEST_TIMEOUT;
|
|
|
|
|
+ }
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 发送post请求
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param url 请求的url
|
|
|
|
|
+ * @param body json串
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public static String sendPostJsonBody(String url, String body) {
|
|
|
|
|
+ log.debug("[HttpClientUtil][sendPostJsonBody] 入参 url={} body={}", url, body);
|
|
|
|
|
+ HttpPost httpPost = new HttpPost(url);
|
|
|
|
|
+ httpPost.addHeader(HTTP.CONTENT_TYPE, "application/json;charset=utf-8");
|
|
|
|
|
+ StringEntity entity = new StringEntity(body, "utf-8");
|
|
|
|
|
+ entity.setContentEncoding("UTF-8");
|
|
|
|
|
+ entity.setContentType("application/json");
|
|
|
|
|
+ httpPost.setEntity(entity);
|
|
|
|
|
+ HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
|
|
|
|
|
+ try {
|
|
|
|
|
+ HttpClient client = httpClientBuilder.build();
|
|
|
|
|
+ HttpResponse response = client.execute(httpPost);
|
|
|
|
|
+ if (response.getStatusLine() != null && response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
|
|
|
|
|
+ String result = EntityUtils.toString(response.getEntity(), "utf-8");
|
|
|
|
|
+ log.debug("[HttpClientUtil][sendPostJsonBody] 结果 url={} result={}", url, result);
|
|
|
|
|
+ return result;
|
|
|
|
|
+ }
|
|
|
|
|
+ log.warn("[HttpClientUtil][sendPostJsonBody] 请求失败 response={}", url, response.toString());
|
|
|
|
|
+ return "";
|
|
|
|
|
+ } catch (IOException ex) {
|
|
|
|
|
+ log.error("[HttpClientUtil][sendPostJsonBody] 请求异常 ex={}", url, ex);
|
|
|
|
|
+ return "";
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 发送post请求
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param url 请求的url
|
|
|
|
|
+ * @param body json串
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public static String sendPostJsonBodyNoEncoding(String url, String body) {
|
|
|
|
|
+ log.debug("[HttpClientUtil][sendPostJsonBody] 入参 url={} body={}", url, body);
|
|
|
|
|
+ HttpPost httpPost = new HttpPost(url);
|
|
|
|
|
+ httpPost.addHeader(HTTP.CONTENT_TYPE, "application/json;charset=utf-8");
|
|
|
|
|
+ StringEntity entity = new StringEntity(body, "utf-8");
|
|
|
|
|
+ entity.setContentType("application/json");
|
|
|
|
|
+ httpPost.setEntity(entity);
|
|
|
|
|
+ HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
|
|
|
|
|
+ try {
|
|
|
|
|
+ HttpClient client = httpClientBuilder.build();
|
|
|
|
|
+ HttpResponse response = client.execute(httpPost);
|
|
|
|
|
+ if (response.getStatusLine() != null && response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
|
|
|
|
|
+ String result = EntityUtils.toString(response.getEntity(), "utf-8");
|
|
|
|
|
+ log.debug("[HttpClientUtil][sendPostJsonBody] 结果 url={} result={}", url, result);
|
|
|
|
|
+ return result;
|
|
|
|
|
+ }
|
|
|
|
|
+ log.warn("[HttpClientUtil][sendPostJsonBody] 请求失败 response={}", url, response.toString());
|
|
|
|
|
+ return "";
|
|
|
|
|
+ } catch (IOException ex) {
|
|
|
|
|
+ log.error("[HttpClientUtil][sendPostJsonBody] 请求异常 ex={}", url, ex);
|
|
|
|
|
+ return "";
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public static String sendGet(String url) {
|
|
|
|
|
+ log.debug("[HttpClientUtil][sendPostJsonBody] 入参 url={} ", url);
|
|
|
|
|
+ HttpGet httpPost = new HttpGet(url);
|
|
|
|
|
+ HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
|
|
|
|
|
+ try {
|
|
|
|
|
+ HttpClient client = httpClientBuilder.build();
|
|
|
|
|
+ HttpResponse response = client.execute(httpPost);
|
|
|
|
|
+ if (response.getStatusLine() != null && response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
|
|
|
|
|
+ String result = EntityUtils.toString(response.getEntity(), "utf-8");
|
|
|
|
|
+ log.debug("[HttpClientUtil][sendPostJsonBody] 结果 url={} result={}", url, result);
|
|
|
|
|
+ return result;
|
|
|
|
|
+ }
|
|
|
|
|
+ log.warn("[HttpClientUtil][sendPostJsonBody] 请求失败 response={}", url, response.toString());
|
|
|
|
|
+ return "";
|
|
|
|
|
+ } catch (IOException ex) {
|
|
|
|
|
+ log.error("[HttpClientUtil][sendPostJsonBody] 请求异常 ex={}", url, ex);
|
|
|
|
|
+ return "";
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+}
|