package com.tykj.quartz.util;
import io.netty.util.internal.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.apache.commons.httpclient.params.HttpClientParams;
import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
@Slf4j
public class HttpUtil {
private HttpUtil(){
}
private static void configTimeout(HttpClient httpClient){
HttpConnectionManagerParams params = httpClient.getHttpConnectionManager().getParams();
params.setConnectionTimeout(20000);
params.setSoTimeout(20000);
}
public static String post(String url, String reqParam) throws Exception {
HttpClient httpClient = new HttpClient();
PostMethod method = new PostMethod(url);
configTimeout(httpClient);
method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
method.addRequestHeader(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
method.addRequestHeader("Auth", "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6ImFkbWluIiwibmJmIjoxNjE2NTcxNjAyLCJleHAiOjE2MTcxNzY0MDIsImlhdCI6MTYxNjU3MTYwMiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo1NzAyMyIsImF1ZCI6IkFQSVBsYXRmb3JtIn0.YgdTONKll5nkOA_Oc29zJFX7EpiTXczHCQJihK2Qxsc");
RequestEntity entity = new StringRequestEntity(reqParam);
method.setRequestEntity(entity);
httpClient.executeMethod(method);
String respResult = method.getResponseBodyAsString();
method.releaseConnection();
return respResult;
}
public static String jsonPost(String url, String reqParam) throws Exception {
HttpClient httpClient = new HttpClient();
PostMethod method = new PostMethod(url);
configTimeout(httpClient);
method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
method.addRequestHeader(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
method.addRequestHeader("Auth", "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6ImFkbWluIiwibmJmIjoxNjE2NTcxNjAyLCJleHAiOjE2MTcxNzY0MDIsImlhdCI6MTYxNjU3MTYwMiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo1NzAyMyIsImF1ZCI6IkFQSVBsYXRmb3JtIn0.YgdTONKll5nkOA_Oc29zJFX7EpiTXczHCQJihK2Qxsc");
RequestEntity entity = new StringRequestEntity(reqParam, "application/json", "utf-8");
method.setRequestEntity(entity);
httpClient.executeMethod(method);
String respResult = method.getResponseBodyAsString();
method.releaseConnection();
log.info("请求{}返回:{}", url, respResult);
return respResult;
}
public static String post(String url, String reqParam, String charSet) throws Exception {
HttpClient httpClient = new HttpClient();
PostMethod method = new PostMethod(url);
configTimeout(httpClient);
method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, charSet);
method.addRequestHeader(HttpMethodParams.HTTP_CONTENT_CHARSET, charSet);
RequestEntity entity = new StringRequestEntity(reqParam);
method.setRequestEntity(entity);
httpClient.executeMethod(method);
String respResult = method.getResponseBodyAsString();
method.releaseConnection();
log.info("请求{}返回:{}", url, respResult);
return respResult;
}
public static String get(String url, String reqParam) throws Exception {
HttpClient httpClient = new HttpClient();
GetMethod method;
if(StringUtil.isNullOrEmpty(reqParam)){
method = new GetMethod(url);
}
else {
System.out.println("------请求URL:"+url + "?" +reqParam);
method = new GetMethod(url + "?" +reqParam);
}
configTimeout(httpClient);
method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
method.addRequestHeader(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
httpClient.executeMethod(method);
String respResult = method.getResponseBodyAsString();
method.releaseConnection();
log.info("请求{}返回:{}", url, respResult);
return respResult;
}
public static String get(String url, String reqParam, String charSet) throws Exception {
HttpClient httpClient = new HttpClient();
GetMethod method;
if(StringUtil.isNullOrEmpty(reqParam)){
method = new GetMethod(url);
}
else {
System.out.println("请求URL字符串:"+url + "?" +reqParam);
method = new GetMethod(url + "?" +reqParam);
}
configTimeout(httpClient);
method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, charSet);
method.addRequestHeader(HttpMethodParams.HTTP_CONTENT_CHARSET, charSet);
httpClient.executeMethod(method);
String respResult = method.getResponseBodyAsString();
method.releaseConnection();
log.info("请求{}返回:{}", url, respResult);
return respResult;
}
public static String postHeader(String url, String reqParam) throws Exception {
HttpClient httpClient = new HttpClient();
HttpClientParams params = new HttpClientParams();
params.setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(0, false));
httpClient.setParams(params);
PostMethod method = new PostMethod(url);
configTimeout(httpClient);
method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
method.addRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
RequestEntity entity = new StringRequestEntity(reqParam);
method.setRequestEntity(entity);
httpClient.executeMethod(method);
String respResult = method.getResponseBodyAsString();
method.releaseConnection();
log.info("请求{}返回:{}", url, respResult);
return respResult;
}
@SuppressWarnings({ "deprecation", "unused" })
private static HttpPost postForm(String url, Map<String, String> params){
HttpPost httpost = new HttpPost(url);
List<NameValuePair> nvps = new ArrayList <>();
Set<String> keySet = params.keySet();
for(String key : keySet) {
nvps.add(new BasicNameValuePair(key, params.get(key)));
}
try {
httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return httpost;
}
public static String postRequset(String url, String reqParamName, String reqParamValue, String charSet) throws Exception {
HttpClient httpClient = new HttpClient();
PostMethod method = new PostMethod(url);
configTimeout(httpClient);
method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, charSet);
method.addRequestHeader(HttpMethodParams.HTTP_CONTENT_CHARSET, charSet);
method.setParameter(reqParamName, reqParamValue);
httpClient.executeMethod(method);
String respResult = method.getResponseBodyAsString();
method.releaseConnection();
log.info("请求{}返回:{}", url, respResult);
return respResult;
}
public static String jsonPostHeader(String url, String reqParam, String accessToken, String version) throws Exception {
HttpClient httpClient = new HttpClient();
PostMethod method = new PostMethod(url);
configTimeout(httpClient);
method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
method.addRequestHeader(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
method.addRequestHeader("accessToken", accessToken);
method.addRequestHeader("version", version);
RequestEntity entity = new StringRequestEntity(reqParam, "application/json", "utf-8");
method.setRequestEntity(entity);
httpClient.executeMethod(method);
String respResult = method.getResponseBodyAsString();
method.releaseConnection();
log.info("请求{}返回:{}", url, respResult);
return respResult;
}
public static String jsonPostHeader(String url, String reqParam) throws Exception {
HttpClient httpClient = new HttpClient();
PostMethod method = new PostMethod(url);
configTimeout(httpClient);
method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
method.addRequestHeader(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
RequestEntity entity = new StringRequestEntity(reqParam, "application/xml", "utf-8");
method.setRequestEntity(entity);
httpClient.executeMethod(method);
String respResult = method.getResponseBodyAsString();
method.releaseConnection();
log.info("请求{}返回:{}", url, respResult);
return respResult;
}
public static String postFormMap(String url, Map<String, Object> paramsMap) {
CloseableHttpClient closeableHttpClient = HttpClients.createDefault();
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(5000)
.setConnectionRequestTimeout(5000)
.setSocketTimeout(5000)
.setRedirectsEnabled(true)
.build();
HttpPost httpPost = new HttpPost(url);
httpPost.setConfig(requestConfig);
List<NameValuePair> list = new ArrayList<>();
for (String key : paramsMap.keySet()) {
list.add(new BasicNameValuePair(key, String.valueOf(paramsMap.get(key))));
}
try {
UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(list, "utf-8");
httpPost.setEntity(urlEncodedFormEntity);
CloseableHttpResponse closeableHttpResponse = closeableHttpClient.execute(httpPost);
String result = "";
if (null != closeableHttpResponse) {
System.out.println(closeableHttpResponse.getStatusLine().getStatusCode());
if (closeableHttpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity httpEntity = closeableHttpResponse.getEntity();
result = EntityUtils.toString(httpEntity);
} else {
result = "Error Response" + closeableHttpResponse.getStatusLine().getStatusCode();
}
}
log.info("请求{}返回:{}", url, result);
return result;
} catch (ClientProtocolException e) {
e.printStackTrace();
return "协议异常";
} catch (ParseException e) {
e.printStackTrace();
return "解析异常";
} catch (IOException e) {
e.printStackTrace();
return "传输异常";
} finally {
try {
if (closeableHttpClient != null) {
closeableHttpClient.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static String post(String url, String reqParam,Map<String,Object> headerParam) throws Exception {
HttpClient httpClient = new HttpClient();
httpClient.getParams().setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 5000);
httpClient.getParams().setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 3000);
PostMethod method = new PostMethod(url);
configTimeout(httpClient);
method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
method.addRequestHeader(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
for (Map.Entry<String, Object> vo : headerParam.entrySet()) {
method.addRequestHeader(vo.getKey(),vo.getKey());
}
RequestEntity entity = new StringRequestEntity(reqParam);
method.setRequestEntity(entity);
httpClient.executeMethod(method);
String respResult = method.getResponseBodyAsString();
method.releaseConnection();
return respResult;
}
public static String get(String url, Map<String,Object> headerParam) throws Exception {
HttpClient httpClient = new HttpClient();
httpClient.getParams().setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 5000);
httpClient.getParams().setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 3000);
GetMethod method;
method = new GetMethod(url);
configTimeout(httpClient);
method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
method.addRequestHeader(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
for (Map.Entry<String, Object> vo : headerParam.entrySet()) {
method.addRequestHeader(vo.getKey(),vo.getKey());
}
httpClient.executeMethod(method);
String respResult = method.getResponseBodyAsString();
method.releaseConnection();
log.info("请求{}返回:{}", url, respResult);
return respResult;
}
}