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 index e4864d3..511dfef 100644 --- a/ccdi-lsfx/src/main/java/com/ruoyi/lsfx/util/HttpUtil.java +++ b/ccdi-lsfx/src/main/java/com/ruoyi/lsfx/util/HttpUtil.java @@ -1,13 +1,17 @@ package com.ruoyi.lsfx.util; import com.ruoyi.lsfx.exception.LsfxApiException; +import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.annotation.Resource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.http.*; import org.springframework.stereotype.Component; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; +import org.springframework.web.util.UriComponentsBuilder; import java.util.Map; @@ -17,9 +21,69 @@ import java.util.Map; @Component public class HttpUtil { + private static final Logger log = LoggerFactory.getLogger(HttpUtil.class); + @Resource private RestTemplate restTemplate; + @Resource + private ObjectMapper objectMapper; + + /** + * 发送GET请求(带查询参数和请求头) + * @param url 请求URL + * @param params 查询参数 + * @param headers 请求头 + * @param responseType 响应类型 + * @return 响应对象 + */ + public T get(String url, Map params, Map headers, Class responseType) { + try { + // 构建URL with查询参数 + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url); + if (params != null && !params.isEmpty()) { + params.forEach((key, value) -> { + if (value != null) { + builder.queryParam(key, value); + } + }); + } + + String fullUrl = builder.toUriString(); + log.debug("【HTTP GET】请求URL: {}", fullUrl); + + // 创建请求头 + HttpHeaders httpHeaders = new HttpHeaders(); + if (headers != null) { + headers.forEach(httpHeaders::add); + } + + // 构建请求实体 + HttpEntity entity = new HttpEntity<>(httpHeaders); + + // 执行GET请求 + ResponseEntity response = restTemplate.exchange( + fullUrl, + HttpMethod.GET, + entity, + String.class + ); + + log.debug("【HTTP GET】响应状态: {}", response.getStatusCode()); + log.debug("【HTTP GET】响应内容: {}", response.getBody()); + + // 解析响应 + if (response.getStatusCode().is2xxSuccessful() && response.getBody() != null) { + return objectMapper.readValue(response.getBody(), responseType); + } else { + throw new LsfxApiException("GET请求失败: " + response.getStatusCode()); + } + } catch (Exception e) { + log.error("【HTTP GET】请求异常: url={}, error={}", url, e.getMessage(), e); + throw new LsfxApiException("GET请求异常: " + e.getMessage(), e); + } + } + /** * 发送GET请求(带请求头) * @param url 请求URL