Files
dzpt/src/main/java/com/saye/hospitalgd/util/HttpClientUtil.java
2025-10-23 15:11:04 +08:00

212 lines
6.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}