当前位置:网站首页>RestTemplate 使用:设置请求头、请求体
RestTemplate 使用:设置请求头、请求体
2022-08-02 12:49:00 【良月生秋】
文章目录
HttpEntity
使用 RestTemplate 时可以通过 HttpEntity 设置请求头和请求体。HttpEntity 有4个构造方法:
- 既不设置请求体,也不设置请求头
- 只设置请求体
- 只设置请求头
- 同时设置请求体和请求头
HttpEntity 源码:
/**
* Create a new, empty {@code HttpEntity}.
*/
protected HttpEntity() {
this(null, null);
}
/**
* Create a new {@code HttpEntity} with the given body and no headers.
* @param body the entity body
*/
public HttpEntity(T body) { // 只设置请求体
this(body, null);
}
/**
* Create a new {@code HttpEntity} with the given headers and no body.
* @param headers the entity headers
*/
public HttpEntity(MultiValueMap<String, String> headers) { // 只设置请求头
this(null, headers);
}
/**
* Create a new {@code HttpEntity} with the given body and headers.
* @param body the entity body
* @param headers the entity headers
*/
public HttpEntity(T body, MultiValueMap<String, String> headers) { // 同时设置请求体与请求头
this.body = body;
HttpHeaders tempHeaders = new HttpHeaders();
if (headers != null) {
tempHeaders.putAll(headers);
}
this.headers = HttpHeaders.readOnlyHttpHeaders(tempHeaders);
}
1、为 post、put 请求设置请求头、请求体
如果是为 post、put 请求设置请求头、请求体,可以在调用方法时,利用第二个参数传入 HttpEntity 对象,例如:
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.set("MyRequestHeader", "MyValue");
HttpEntity requestEntity = new HttpEntity(requestHeaders);
Book book = restTemplate.postForObject("http://127.0.0.1:8080/getbook", requestEntity, Book.class);
PS:public class HttpHeaders implements MultiValueMap<String, String>, Serializable
同时设置请求头和请求体:
@PostMapping("post_with_body_and_header")
public void postWithBodyAndHeader(@RequestBody(required = false) UserEntity requestBody) {
// 1.请求头
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add("headerName1", "headerValue1");
httpHeaders.add("headerName2", "headerValue2");
httpHeaders.add("headerName3", "headerValue3");
httpHeaders.add("Content-Type", "application/json"); // 传递请求体时必须设置
// 2.请求头 & 请求体
HttpEntity<String> fromEntity = new HttpEntity<>(JSONUtil.toJsonStr(requestBody), httpHeaders);
MessageBox responseBody = restTemplate.postForObject(INVOKE_URL + "/test/receive", fromEntity, MessageBox.class);
log.info("响应体:{}", JSONUtil.toJsonPrettyStr(responseBody));
}
2、为其他请求设置请求头、请求体
如果是其它HTTP方法调用要设置请求头,可以使用exchange()方法:
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.set("MyRequestHeader", "MyValue");
HttpEntity requestEntity = new HttpEntity(requestHeaders);
HttpEntity<String> response = template.exchange(
"http://example.com/hotels/{hotel}",
HttpMethod.GET,
requestEntity,
String.class,
"42"
);
String responseHeader = response.getHeaders().getFirst("MyResponseHeader");
String body = response.getBody();
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
- String concatenation in SQL
- Data Lake (2): What is Hudi
- 第十四章 手动创建 REST 服务(二)
- 动态组件-component
- SQL Server 2019 installation error 0 x80004005 service there is no timely response to the start or control request a detailed solution
- Name conventions in FreeRTOS
- 分享一个Chrome控制台数据获取的例子
- package.json与package-lock.json
- 智能图像分析-智能家用电器图像目标检测统计计数检测与识别-艾科瑞特科技(iCREDIT)
- 机器人碰撞检测方法形式化
猜你喜欢
随机推荐
Hand rolled architecture, 41 Redis interview asked
LeetCode_377_组合总和Ⅳ
Software component analysis: 5 major capabilities to protect software supply chain security
WPF——自定义日历
Detailed explanation of network flow (what information can the flow network diagram generally reflect)
svg balloon rises explosion js special effect
30 lines of code to realize serverless real-time health code recognition -- operation manual
最小割和对偶图(未完成)
Wireless vibrating wire acquisition instrument remote modification method
ETL(二):表达式组件的使用
String concatenation in SQL
Pod Scheduling Strategy: Affinity, Stain and Stain Tolerance
SQL Server 2014安装教程(保姆级图解教程)
svg实现的树木四季变化
MyCat2的介绍与安装以及基本使用
There are several ways to jump to js source code, jump on the current page, jump on the blank page
qt 编译报错 No rule to make target
SQL Server database generation and execution of SQL scripts
1.3 Rapid Spanning Tree Protocol RSTP
this的绑定指向详细解答