resttemplate设置请求头体
时间: 2024-10-27 11:02:28 浏览: 26
`RestTemplate` 是 Spring 框架提供的用于发送 HTTP 请求的工具类。如果你想通过它发送一个带有请求头(Header Body)的请求,比如携带 JSON 数据作为请求体,通常你会使用 `HttpEntity` 对象。这是一个包含请求体内容和元数据(如头部信息)的容器。以下是一个示例,展示如何发送一个 POST 请求,同时设置请求头和JSON请求体:
```java
import org.springframework.http.*;
import org.springframework.web.client.RestTemplate;
// 定义要发送的 JSON 数据
Object requestBody = new HashMap<>();
requestBody.put("key", "value");
// 创建 HttpEntity 对象,指定 Content-Type 为 JSON
HttpEntity<String> request = new HttpEntity<>(new ObjectMapper()..writeValueAsString(requestBody),
headers);
// headers 是一个 HttpHeaders 实例,用于添加额外的头部信息
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON); // 标记请求体为JSON
// 使用 RestTemplate 发送 POST 请求
ResponseEntity<String> response = restTemplate.postForObject(
"https://api.example.com/endpoint", // 请求 URL
request, // 请求体
String.class, // 返回值的类型
(uri) -> uri // 可选的 URI 解析器,这里可以省略
);
// 获取响应结果
String responseBody = response.getBody();
```
在这个例子中,`postForObject` 方法接收 URL、请求体、预期的响应类型以及一个可选的 URI 解析器(在这里不是必需的)。请求体是 `HttpEntity`,包含了 JSON 字符串和 Content-Type。
阅读全文