添加HttpClientUtil
This commit is contained in:
parent
10f2cc6d8a
commit
97168cb13f
@ -0,0 +1,324 @@
|
||||
package com.ruoyi.common.utils.http;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.http.HttpEntity;
|
||||
import org.apache.http.HttpResponse;
|
||||
import org.apache.http.NameValuePair;
|
||||
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.HttpGet;
|
||||
import org.apache.http.client.methods.HttpPost;
|
||||
import org.apache.http.conn.ssl.DefaultHostnameVerifier;
|
||||
import org.apache.http.conn.util.PublicSuffixMatcher;
|
||||
import org.apache.http.conn.util.PublicSuffixMatcherLoader;
|
||||
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.message.BasicNameValuePair;
|
||||
import org.apache.http.util.EntityUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.ruoyi.common.utils.spring.SpringUtils;
|
||||
|
||||
public class HttpClientUtil {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(HttpClientUtil.class);
|
||||
/**
|
||||
* 默认参数设置
|
||||
* setConnectTimeout:设置连接超时时间,单位毫秒。
|
||||
* setConnectionRequestTimeout:设置从connect Manager获取Connection 超时时间,单位毫秒。
|
||||
* setSocketTimeout:请求获取数据的超时时间,单位毫秒。访问一个接口,多少时间内无法返回数据,就直接放弃此次调用。 暂时定义15分钟
|
||||
*/
|
||||
private static RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(600000)
|
||||
.setConnectTimeout(600000)
|
||||
.setConnectionRequestTimeout(600000).build();
|
||||
|
||||
private static CloseableHttpClient client = SpringUtils.getBean("closeableHttpClient");
|
||||
|
||||
/**
|
||||
* 发送 post请求
|
||||
*
|
||||
* @param httpUrl 地址
|
||||
*/
|
||||
public static String sendHttpPost(String httpUrl) {
|
||||
HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost
|
||||
return sendHttpPost(httpPost);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送 post请求
|
||||
*
|
||||
* @param httpUrl 地址
|
||||
* @param params 参数(格式:key1=value1&key2=value2)
|
||||
*/
|
||||
public static String sendHttpPost(String httpUrl, String params) {
|
||||
HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost
|
||||
try {
|
||||
// 设置参数
|
||||
StringEntity stringEntity = new StringEntity(params, "UTF-8");
|
||||
stringEntity.setContentType("application/x-www-form-urlencoded");
|
||||
httpPost.setEntity(stringEntity);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return sendHttpPost(httpPost);
|
||||
}
|
||||
|
||||
public static String sendHttpPost(String httpUrl, Object object) {
|
||||
HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost
|
||||
String jsonString = JSON.toJSONString(object);
|
||||
httpPost.setHeader("Accept", ContentType.APPLICATION_JSON.getMimeType());
|
||||
httpPost.setHeader("Content-Type", ContentType.APPLICATION_JSON.getMimeType());
|
||||
log.debug(jsonString);
|
||||
try {
|
||||
|
||||
// 设置参数
|
||||
StringEntity stringEntity = new StringEntity(jsonString, ContentType.APPLICATION_JSON);
|
||||
|
||||
httpPost.setEntity(stringEntity);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return sendHttpPost(httpPost);
|
||||
}
|
||||
|
||||
public static String sendHttpPost(String httpUrl, Object data, Map<String, String> headersMap) {
|
||||
HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost
|
||||
String jsonString = JSON.toJSONString(data);
|
||||
httpPost.setHeader("Accept", ContentType.APPLICATION_JSON.getMimeType());
|
||||
httpPost.setHeader("Content-Type", ContentType.APPLICATION_JSON.getMimeType());
|
||||
for (String keySet : headersMap.keySet()) {
|
||||
httpPost.setHeader(keySet, headersMap.get(keySet));
|
||||
}
|
||||
log.debug(jsonString);
|
||||
try {
|
||||
// 设置参数
|
||||
StringEntity stringEntity = new StringEntity(jsonString, ContentType.APPLICATION_JSON);
|
||||
|
||||
httpPost.setEntity(stringEntity);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return sendHttpPost(httpPost);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送 post请求
|
||||
*
|
||||
* @param httpUrl 地址
|
||||
* @param maps 参数
|
||||
*/
|
||||
public static String sendHttpPost(String httpUrl, Map<String, String> maps) {
|
||||
HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost
|
||||
// 创建参数队列
|
||||
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
|
||||
for (String key : maps.keySet()) {
|
||||
nameValuePairs.add(new BasicNameValuePair(key, maps.get(key)));
|
||||
}
|
||||
try {
|
||||
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return sendHttpPost(httpPost);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送 get请求
|
||||
*
|
||||
* @param httpUrl
|
||||
*/
|
||||
public static String sendHttpGet(String httpUrl) {
|
||||
HttpGet httpGet = new HttpGet(httpUrl);// 创建get请求
|
||||
return sendHttpGet(httpGet);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送 get请求Https
|
||||
*
|
||||
* @param httpUrl
|
||||
*/
|
||||
public static String sendHttpsGet(String httpUrl) {
|
||||
HttpGet httpGet = new HttpGet(httpUrl);// 创建get请求
|
||||
return sendHttpsGet(httpGet);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送Post请求
|
||||
*
|
||||
* @param httpPost
|
||||
* @return
|
||||
*/
|
||||
private static String sendHttpPost(HttpPost httpPost) {
|
||||
CloseableHttpClient httpClient = null;
|
||||
CloseableHttpResponse response = null;
|
||||
HttpEntity entity = null;
|
||||
String responseContent = null;
|
||||
try {
|
||||
// 创建默认的httpClient实例
|
||||
// httpClient = HttpClients.createDefault();
|
||||
httpPost.setConfig(requestConfig);
|
||||
// 执行请求
|
||||
long execStart = System.currentTimeMillis();
|
||||
response = client.execute(httpPost);
|
||||
long execEnd = System.currentTimeMillis();
|
||||
log.debug("=================执行post请求耗时:" + (execEnd - execStart) + "ms");
|
||||
long getStart = System.currentTimeMillis();
|
||||
entity = response.getEntity();
|
||||
responseContent = EntityUtils.toString(entity, "UTF-8");
|
||||
long getEnd = System.currentTimeMillis();
|
||||
log.debug("=================获取响应结果耗时:" + (getEnd - getStart) + "ms");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
try {
|
||||
// 关闭连接,释放资源
|
||||
if (response != null) {
|
||||
response.close();
|
||||
}
|
||||
if (httpClient != null) {
|
||||
httpClient.close();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return responseContent;
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送Get请求
|
||||
*
|
||||
* @param httpGet
|
||||
* @return
|
||||
*/
|
||||
private static String sendHttpGet(HttpGet httpGet) {
|
||||
CloseableHttpClient httpClient = null;
|
||||
CloseableHttpResponse response = null;
|
||||
HttpEntity entity = null;
|
||||
String responseContent = null;
|
||||
try {
|
||||
// 创建默认的httpClient实例.
|
||||
|
||||
httpGet.setConfig(requestConfig);
|
||||
// 执行请求
|
||||
response = client.execute(httpGet);
|
||||
entity = response.getEntity();
|
||||
responseContent = EntityUtils.toString(entity, "UTF-8");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
try {
|
||||
// 关闭连接,释放资源
|
||||
if (response != null) {
|
||||
response.close();
|
||||
}
|
||||
if (httpClient != null) {
|
||||
httpClient.close();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return responseContent;
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送Get请求Https
|
||||
*
|
||||
* @param httpGet
|
||||
* @return
|
||||
*/
|
||||
private static String sendHttpsGet(HttpGet httpGet) {
|
||||
CloseableHttpClient httpClient = null;
|
||||
CloseableHttpResponse response = null;
|
||||
HttpEntity entity = null;
|
||||
String responseContent = null;
|
||||
try {
|
||||
// 创建默认的httpClient实例.
|
||||
PublicSuffixMatcher publicSuffixMatcher = PublicSuffixMatcherLoader
|
||||
.load(new URL(httpGet.getURI().toString()));
|
||||
DefaultHostnameVerifier hostnameVerifier = new DefaultHostnameVerifier(publicSuffixMatcher);
|
||||
httpClient = HttpClients.custom().setSSLHostnameVerifier(hostnameVerifier).build();
|
||||
httpGet.setConfig(requestConfig);
|
||||
// 执行请求
|
||||
response = httpClient.execute(httpGet);
|
||||
entity = response.getEntity();
|
||||
responseContent = EntityUtils.toString(entity, "UTF-8");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
try {
|
||||
// 关闭连接,释放资源
|
||||
if (response != null) {
|
||||
response.close();
|
||||
}
|
||||
if (httpClient != null) {
|
||||
httpClient.close();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return responseContent;
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送xml数据
|
||||
*
|
||||
* @param url
|
||||
* @param xmlData
|
||||
* @return
|
||||
* @throws ClientProtocolException
|
||||
* @throws IOException
|
||||
*/
|
||||
public static HttpResponse sendXMLDataByPost(String url, String xmlData)
|
||||
throws ClientProtocolException, IOException {
|
||||
|
||||
HttpPost httppost = new HttpPost(url);
|
||||
StringEntity entity = new StringEntity(xmlData);
|
||||
httppost.setEntity(entity);
|
||||
httppost.setHeader("Content-Type", "text/xml;charset=UTF-8");
|
||||
HttpResponse response = client.execute(httppost);
|
||||
return response;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得响应HTTP实体内容
|
||||
*
|
||||
* @param response
|
||||
* @return
|
||||
* @throws IOException
|
||||
* @throws UnsupportedEncodingException
|
||||
*/
|
||||
public static String getHttpEntityContent(HttpResponse response) throws IOException, UnsupportedEncodingException {
|
||||
HttpEntity entity = response.getEntity();
|
||||
if (entity != null) {
|
||||
InputStream is = entity.getContent();
|
||||
BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
|
||||
String line = br.readLine();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
while (line != null) {
|
||||
sb.append(line + "\n");
|
||||
line = br.readLine();
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user