写一个Java工具类的方法,resttemplate 传入一个或者多个路径参数和查询参数
时间: 2024-01-27 08:05:35 浏览: 202
java中常用工具类之字符串操作类和MD5加密解密类
好的,这里给出一个Java工具类的示例方法。这个方法的作用是使用`RestTemplate`发送HTTP请求,并将路径参数和查询参数添加到URL中。
```java
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
import java.util.Map;
public class RestTemplateUtils {
/**
* 使用RestTemplate发送HTTP请求
* @param url 请求URL,可以包含路径参数
* @param queryParams 查询参数
* @param pathVariables 路径参数
* @param method HTTP方法
* @param requestHeaders 请求头
* @param requestBody 请求体
* @param responseType 响应类型
* @param <T> 响应类型的泛型参数
* @return 响应实体
*/
public static <T> ResponseEntity<T> sendRequest(String url,
MultiValueMap<String, String> queryParams,
Map<String, ?> pathVariables,
HttpMethod method,
HttpHeaders requestHeaders,
Object requestBody,
Class<T> responseType) {
RestTemplate restTemplate = new RestTemplate();
// 添加查询参数
UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(url);
if (queryParams != null) {
builder.queryParams(queryParams);
}
// 添加路径参数
if (pathVariables != null) {
url = builder.buildAndExpand(pathVariables).toString();
}
// 构造请求实体
HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, requestHeaders);
// 发送请求
return restTemplate.exchange(url, method, requestEntity, responseType);
}
}
```
这个工具类有一个静态方法`sendRequest`,接收若干参数,返回一个`ResponseEntity`对象,表示HTTP响应。在方法内部,我们首先创建一个`RestTemplate`对象,然后使用`UriComponentsBuilder`为URL添加查询参数和路径参数。最后,我们将请求信息封装成一个`HttpEntity`对象,使用`RestTemplate`的`exchange`方法发送HTTP请求,并将响应解析为指定的类型。
阅读全文