resttemplate MultiValueMap
时间: 2023-08-24 07:09:31 浏览: 127
RestTemplate实现服务间调用demo案例
RestTemplate 是 Spring 框架提供的一个用于进行 HTTP 请求的工具类。MultiValueMap 是 Spring 提供的一个接口,用于表示一个键值对集合,其中每个键可以有多个值。在 RestTemplate 中,我们可以使用 MultiValueMap 来传递请求参数或请求头信息。
下面是一个使用 RestTemplate 发送 POST 请求并传递 MultiValueMap 参数的示例代码:
```java
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
public class RestTemplateExample {
public static void main(String[] args) {
// 创建 RestTemplate 实例
RestTemplate restTemplate = new RestTemplate();
// 创建请求头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
// 创建请求参数
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add("key1", "value1");
params.add("key2", "value2");
// 创建请求实体
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(params, headers);
// 发送 POST 请求
ResponseEntity<String> response = restTemplate.postForEntity("http://example.com/api", requestEntity, String.class);
// 处理响应
if (response.getStatusCode().is2xxSuccessful()) {
String responseBody = response.getBody();
System.out.println(responseBody);
} else {
System.out.println("Request failed");
}
}
}
```
上述代码中,我们首先创建了一个 RestTemplate 实例。然后,创建了一个 HttpHeaders 对象设置请求头信息,设置 Content-Type 为 application/x-www-form-urlencoded。接下来,创建一个 MultiValueMap 对象作为请求参数,使用 add() 方法添加键值对。然后,创建一个 HttpEntity 对象,将参数和请求头信息封装进去。最后,调用 RestTemplate 的 postForEntity() 方法发送 POST 请求,并获取响应结果。
希望这个例子可以帮助你理解如何使用 RestTemplate 传递 MultiValueMap 参数。如果有任何疑问,请随时提问。
阅读全文