2025-10-20 14:39:29 +08:00
|
|
|
|
package com.saye.hospitalgd.util;
|
|
|
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
|
|
import org.apache.http.HttpEntity;
|
|
|
|
|
|
import org.apache.http.HttpStatus;
|
|
|
|
|
|
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.entity.StringEntity;
|
|
|
|
|
|
import org.apache.http.impl.client.CloseableHttpClient;
|
|
|
|
|
|
import org.apache.http.impl.client.HttpClients;
|
|
|
|
|
|
import org.apache.http.message.BasicHeader;
|
|
|
|
|
|
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.util.HashMap;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @author thuang
|
|
|
|
|
|
* @version 1.0
|
|
|
|
|
|
* @description: HTTP客户端工具类,兼容JDK8
|
|
|
|
|
|
* @date 2024/12/19 16:00
|
|
|
|
|
|
*/
|
|
|
|
|
|
public class HttpClientUtil {
|
|
|
|
|
|
|
|
|
|
|
|
private static final Logger log = LoggerFactory.getLogger(HttpClientUtil.class);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 发送GET请求
|
|
|
|
|
|
* @param url 请求URL
|
|
|
|
|
|
* @param headers 请求头(可为null)
|
|
|
|
|
|
* @return 响应结果
|
|
|
|
|
|
*/
|
|
|
|
|
|
public static String doGet(String url, HashMap<String, String> headers) {
|
|
|
|
|
|
CloseableHttpClient httpClient = null;
|
|
|
|
|
|
CloseableHttpResponse response = null;
|
|
|
|
|
|
String result = null;
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
httpClient = HttpClients.createDefault();
|
|
|
|
|
|
HttpGet httpGet = new HttpGet(url);
|
|
|
|
|
|
|
|
|
|
|
|
// 设置请求头
|
|
|
|
|
|
if (headers != null) {
|
|
|
|
|
|
for (String key : headers.keySet()) {
|
|
|
|
|
|
httpGet.setHeader(key, headers.get(key));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
response = httpClient.execute(httpGet);
|
|
|
|
|
|
|
|
|
|
|
|
if (response != null && response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
|
|
|
|
|
|
HttpEntity entity = response.getEntity();
|
|
|
|
|
|
if (entity != null) {
|
|
|
|
|
|
result = EntityUtils.toString(entity, "UTF-8");
|
|
|
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
|
|
|
log.error("GET请求失败,状态码: " + (response != null ? response.getStatusLine().getStatusCode() : "null"));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
log.error("GET请求异常", e);
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
try {
|
|
|
|
|
|
if (response != null) {
|
|
|
|
|
|
response.close();
|
|
|
|
|
|
}
|
|
|
|
|
|
if (httpClient != null) {
|
|
|
|
|
|
httpClient.close();
|
|
|
|
|
|
}
|
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
|
log.error("关闭HTTP连接异常", e);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 发送POST请求(JSON格式)
|
|
|
|
|
|
* @param url 请求URL
|
|
|
|
|
|
* @param data 请求数据(JSON对象)
|
|
|
|
|
|
* @return 响应结果
|
|
|
|
|
|
*/
|
|
|
|
|
|
public static String doPost(String url, Object data) {
|
|
|
|
|
|
CloseableHttpClient httpClient = null;
|
|
|
|
|
|
CloseableHttpResponse response = null;
|
|
|
|
|
|
String result = null;
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
httpClient = HttpClients.createDefault();
|
|
|
|
|
|
HttpPost httpPost = new HttpPost(url);
|
|
|
|
|
|
httpPost.setHeader("content-type", "application/json;charset=utf-8");
|
|
|
|
|
|
|
|
|
|
|
|
// 将数据转换为JSON字符串
|
|
|
|
|
|
String jsonData = JSON.toJSONString(data);
|
|
|
|
|
|
StringEntity stringEntity = new StringEntity(jsonData, "UTF-8");
|
|
|
|
|
|
stringEntity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
|
|
|
|
|
|
httpPost.setEntity(stringEntity);
|
|
|
|
|
|
|
|
|
|
|
|
response = httpClient.execute(httpPost);
|
|
|
|
|
|
|
|
|
|
|
|
if (response != null && response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
|
|
|
|
|
|
HttpEntity entity = response.getEntity();
|
|
|
|
|
|
if (entity != null) {
|
|
|
|
|
|
result = EntityUtils.toString(entity, "UTF-8");
|
|
|
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
|
|
|
log.error("POST请求失败,状态码: " + (response != null ? response.getStatusLine().getStatusCode() : "null"));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
log.error("POST请求异常", e);
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
try {
|
|
|
|
|
|
if (response != null) {
|
|
|
|
|
|
response.close();
|
|
|
|
|
|
}
|
|
|
|
|
|
if (httpClient != null) {
|
|
|
|
|
|
httpClient.close();
|
|
|
|
|
|
}
|
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
|
log.error("关闭HTTP连接异常", e);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 发送POST请求(表单格式)
|
|
|
|
|
|
* @param url 请求URL
|
|
|
|
|
|
* @param params 请求参数
|
|
|
|
|
|
* @return 响应结果
|
|
|
|
|
|
*/
|
|
|
|
|
|
public static String doPostForm(String url, HashMap<String, String> params) {
|
|
|
|
|
|
CloseableHttpClient httpClient = null;
|
|
|
|
|
|
CloseableHttpResponse response = null;
|
|
|
|
|
|
String result = null;
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
httpClient = HttpClients.createDefault();
|
|
|
|
|
|
HttpPost httpPost = new HttpPost(url);
|
|
|
|
|
|
httpPost.setHeader("content-type", "application/x-www-form-urlencoded;charset=utf-8");
|
|
|
|
|
|
|
|
|
|
|
|
// 构建表单数据
|
|
|
|
|
|
StringBuilder formData = new StringBuilder();
|
|
|
|
|
|
if (params != null) {
|
|
|
|
|
|
for (String key : params.keySet()) {
|
|
|
|
|
|
if (formData.length() > 0) {
|
|
|
|
|
|
formData.append("&");
|
|
|
|
|
|
}
|
|
|
|
|
|
formData.append(key).append("=").append(params.get(key));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
StringEntity stringEntity = new StringEntity(formData.toString(), "UTF-8");
|
|
|
|
|
|
httpPost.setEntity(stringEntity);
|
|
|
|
|
|
|
|
|
|
|
|
response = httpClient.execute(httpPost);
|
|
|
|
|
|
|
|
|
|
|
|
if (response != null && response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
|
|
|
|
|
|
HttpEntity entity = response.getEntity();
|
|
|
|
|
|
if (entity != null) {
|
|
|
|
|
|
result = EntityUtils.toString(entity, "UTF-8");
|
|
|
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
|
|
|
log.error("POST表单请求失败,状态码: " + (response != null ? response.getStatusLine().getStatusCode() : "null"));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
log.error("POST表单请求异常", e);
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
try {
|
|
|
|
|
|
if (response != null) {
|
|
|
|
|
|
response.close();
|
|
|
|
|
|
}
|
|
|
|
|
|
if (httpClient != null) {
|
|
|
|
|
|
httpClient.close();
|
|
|
|
|
|
}
|
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
|
log.error("关闭HTTP连接异常", e);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-10-23 15:11:04 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|