restTemplate发起get请求设置参数
时间: 2024-11-02 11:03:39 浏览: 20
springRestTemplate
5星 · 资源好评率100%
在Spring框架中,可以使用RestTemplate工具类来发起GET请求,并通过`uriVariables`或`queryParameters`设置动态参数。这是一个基本的例子:
```java
import org.springframework.web.client.RestTemplate;
public class RestCall {
private final RestTemplate restTemplate = new RestTemplate();
public String get(String apiUrl, Map<String, Object> parameters) {
// 使用URI变量
if (parameters != null && !parameters.isEmpty()) {
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(apiUrl);
for (Map.Entry<String, Object> entry : parameters.entrySet()) {
builder.queryParam(entry.getKey(), entry.getValue());
}
UriComponents uriComponents = builder.build();
return restTemplate.getForObject(uriComponents.toUriString(), String.class);
}
// 或者直接使用查询字符串形式
else {
return restTemplate.getForObject(apiUrl + "?" + buildQueryString(parameters), String.class);
}
}
private String buildQueryString(Map<String, Object> parameters) {
StringBuilder queryStringBuilder = new StringBuilder();
for (Map.Entry<String, Object> entry : parameters.entrySet()) {
queryStringBuilder.append(entry.getKey()).append('=').append(entry.getValue())
.append('&');
}
// 移除最后一个'&'
return queryStringBuilder.toString().substring(0, queryStringBuilder.length() - 1);
}
}
```
在这个例子中,`get`方法接收一个API URL和一个参数映射(`Map<String, Object>`)。如果参数不是空的,会创建一个URIComponents对象,其中包含了所有查询参数;如果不是,就直接将参数附加到URL的查询字符串部分。
然后调用`RestTemplate`的`getForObject`方法,传入构建好的URI或查询字符串,以及期望的返回类型(在这里是`String.class`)。
阅读全文