feat(lsfx): HttpUtil添加GET请求支持
This commit is contained in:
@@ -1,13 +1,17 @@
|
|||||||
package com.ruoyi.lsfx.util;
|
package com.ruoyi.lsfx.util;
|
||||||
|
|
||||||
import com.ruoyi.lsfx.exception.LsfxApiException;
|
import com.ruoyi.lsfx.exception.LsfxApiException;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.http.*;
|
import org.springframework.http.*;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.util.LinkedMultiValueMap;
|
import org.springframework.util.LinkedMultiValueMap;
|
||||||
import org.springframework.util.MultiValueMap;
|
import org.springframework.util.MultiValueMap;
|
||||||
import org.springframework.web.client.RestClientException;
|
import org.springframework.web.client.RestClientException;
|
||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
import org.springframework.web.util.UriComponentsBuilder;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -17,9 +21,69 @@ import java.util.Map;
|
|||||||
@Component
|
@Component
|
||||||
public class HttpUtil {
|
public class HttpUtil {
|
||||||
|
|
||||||
|
private static final Logger log = LoggerFactory.getLogger(HttpUtil.class);
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private RestTemplate restTemplate;
|
private RestTemplate restTemplate;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ObjectMapper objectMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送GET请求(带查询参数和请求头)
|
||||||
|
* @param url 请求URL
|
||||||
|
* @param params 查询参数
|
||||||
|
* @param headers 请求头
|
||||||
|
* @param responseType 响应类型
|
||||||
|
* @return 响应对象
|
||||||
|
*/
|
||||||
|
public <T> T get(String url, Map<String, Object> params, Map<String, String> headers, Class<T> 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<String> entity = new HttpEntity<>(httpHeaders);
|
||||||
|
|
||||||
|
// 执行GET请求
|
||||||
|
ResponseEntity<String> 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请求(带请求头)
|
* 发送GET请求(带请求头)
|
||||||
* @param url 请求URL
|
* @param url 请求URL
|
||||||
|
|||||||
Reference in New Issue
Block a user