From a6b36241aafc9c28d06b664d535c5b2e16b9472f Mon Sep 17 00:00:00 2001 From: wkc <978997012@qq.com> Date: Mon, 2 Mar 2026 09:59:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0HTTP=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E5=B7=A5=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/lsfx/util/HttpUtil.java | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 ccdi-lsfx/src/main/java/com/ruoyi/lsfx/util/HttpUtil.java diff --git a/ccdi-lsfx/src/main/java/com/ruoyi/lsfx/util/HttpUtil.java b/ccdi-lsfx/src/main/java/com/ruoyi/lsfx/util/HttpUtil.java new file mode 100644 index 0000000..26e4aa0 --- /dev/null +++ b/ccdi-lsfx/src/main/java/com/ruoyi/lsfx/util/HttpUtil.java @@ -0,0 +1,91 @@ +package com.ruoyi.lsfx.util; + +import org.springframework.http.*; +import org.springframework.stereotype.Component; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.client.RestTemplate; + +import javax.annotation.Resource; +import java.util.Map; + +/** + * HTTP请求工具类 + */ +@Component +public class HttpUtil { + + @Resource + private RestTemplate restTemplate; + + /** + * 发送GET请求(带请求头) + * @param url 请求URL + * @param headers 请求头 + * @param responseType 响应类型 + * @return 响应对象 + */ + public T get(String url, Map headers, Class responseType) { + HttpHeaders httpHeaders = createHeaders(headers); + HttpEntity requestEntity = new HttpEntity<>(httpHeaders); + + ResponseEntity response = restTemplate.exchange( + url, HttpMethod.GET, requestEntity, responseType + ); + return response.getBody(); + } + + /** + * 发送POST请求(JSON格式,带请求头) + * @param url 请求URL + * @param request 请求对象 + * @param headers 请求头 + * @param responseType 响应类型 + * @return 响应对象 + */ + public T postJson(String url, Object request, Map headers, Class responseType) { + HttpHeaders httpHeaders = createHeaders(headers); + httpHeaders.setContentType(MediaType.APPLICATION_JSON); + + HttpEntity requestEntity = new HttpEntity<>(request, httpHeaders); + + ResponseEntity response = restTemplate.postForEntity(url, requestEntity, responseType); + return response.getBody(); + } + + /** + * 上传文件(Multipart格式) + * @param url 请求URL + * @param params 参数(包含文件) + * @param headers 请求头 + * @param responseType 响应类型 + * @return 响应对象 + */ + public T uploadFile(String url, Map params, Map headers, Class responseType) { + HttpHeaders httpHeaders = createHeaders(headers); + httpHeaders.setContentType(MediaType.MULTIPART_FORM_DATA); + + MultiValueMap body = new LinkedMultiValueMap<>(); + if (params != null) { + params.forEach(body::add); + } + + HttpEntity> requestEntity = new HttpEntity<>(body, httpHeaders); + + ResponseEntity response = restTemplate.postForEntity(url, requestEntity, responseType); + return response.getBody(); + } + + /** + * 创建请求头 + * @param headers 请求头Map + * @return HttpHeaders对象 + */ + private HttpHeaders createHeaders(Map headers) { + HttpHeaders httpHeaders = new HttpHeaders(); + if (headers != null && !headers.isEmpty()) { + headers.forEach(httpHeaders::set); + } + return httpHeaders; + } +}