import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import cn.hutool.http.Method;
import cn.hutool.json.JSONUtil;
import java.util.HashMap;
import java.util.Map;
/**
* @program:
* @description: http工具类
* @author:
* @create:
**/
public final class HttpRequestUtil {
/**
* 请求方式:form表单
*/
public static final String FORM_CONTENT_TYPE = "application/x-www-form-urlencoded;charset=utf-8";
/**
* 请求方式:JSON
*/
public static final String JSON_CONTENT_TYPE = "application/json;charset=UTF-8";
/**
* 请求超时时间
* 单位:毫秒
* 时间:30秒
*/
private final static int TIME_OUT = 30 * 1000;
/**
* 发起http请求
*
* @param requestURL 请求路径
* @param contentType 请求方式:form表单/json
* @param requestParamMap 请求参数
* @return
*/
public static Map<String, Object> post(String requestURL, String contentType, Map<String, String> requestParamMap) {
// todo:此处需做业务校验,contentType必须是FORM_CONTENT_TYPE与JSON_CONTENT_TYPE其中的一个
// 创建结果集 todo:此处可创建返回数据VO
Map<String, Object> returnMap = new HashMap<>();
// 创建http连接
HttpRequest request = HttpUtil.createRequest(Method.POST, requestURL).timeout(TIME_OUT);
// 封装请求参数
if (FORM_CONTENT_TYPE.equals(contentType)) {
request.header("Content-Type", contentType);
if (!requestParamMap.isEmpty()) {
for (String key : requestParamMap.keySet()) {
request.form(key, requestParamMap.get(key));
}
}
} else if (JSON_CONTENT_TYPE.equals(contentType)) {
String requestParamStr = requestParamMap.isEmpty() ? "" : JSONUtil.toJsonStr(requestParamMap);
request.body(requestParamStr, contentType);
}
Integer responseCode = null; // 响应状态码
String responseBody = null; // 响应数据
try {
// 发起Http请求
HttpResponse response = request.execute();
// 响应状态码
responseCode = null == response ? null : response.getStatus();
// 响应数据
responseBody = response.body();
// 封装响应参数
returnMap.put("code", responseCode);
if (200 == responseCode) {
returnMap.put("body", responseBody);
}
} catch (Exception exception) {
// todo:业务代码出现异常,做出对应处理。例如:记录日志或抛出异常
} finally {
/**
* todo:保存日志,已有数据:
* requestURL:请求路径
* requestParamMap:请求参数
* responseCode:响应状态码
* responseBody:响应数据
*/
}
// 返回数据
return returnMap;
}
}
Java-使用Hutool工具包发起http请求
于 2024-06-27 09:56:40 首次发布