如何将请求标头添加到 outboundGateway spring integration dsl
Posted
技术标签:
【中文标题】如何将请求标头添加到 outboundGateway spring integration dsl【英文标题】:How to add request headers to outboundGateway spring integration dsl 【发布时间】:2018-10-15 00:31:57 【问题描述】:我在 spring 集成 dsl 中找不到向 outboundGateway 添加标头的功能。
.handle(outboundGateway("localhost:8080/search")
.httpMethod(HttpMethod.GET)
.expectedResponseType(Order.class))
我想添加到请求的标题是
HttpHeaders headers = new HttpHeaders();
headers.setAccept(newArrayList(APPLICATION_JSON));
headers.setContentType(APPLICATION_JSON);
headers.add("Client-Id", "test");
有人可以帮我吗
【问题讨论】:
【参考方案1】:没错:Spring Integration 不允许直接操作 HttpHeaders
对象。相反,您应该遵循规范的消息传递方法 - 无协议 .enrichHeaders()
:
.enrichHeaders(e -> e
.header(DefaultHttpHeaderMapper.ACCEPT, APPLICATION_JSON)
.header(DefaultHttpHeaderMapper.CONTENT_TYPE, APPLICATION_JSON)
.header("Client-Id", "test"))
.handle(outboundGateway("localhost:8080/search")
.httpMethod(HttpMethod.GET)
.expectedResponseType(Order.class))
【讨论】:
对不起,这些标头没有传递给客户端,我的wiremock抱怨说“标头不存在”以匹配存根。 我通过将.mappedRequestHeaders("Client-Id", DefaultHttpHeaderMapper.ACCEPT, DefaultHttpHeaderMapper.CONTENT_TYPE)
添加到 outboundGateway 使其工作
或者你可以使用*
。抱歉,一直很忙,但很高兴您在没有帮助的情况下解决了这个问题!
无论如何感谢您的帮助,我不想使用 * 因为我有一些我不想发送给客户端的流标头变量以上是关于如何将请求标头添加到 outboundGateway spring integration dsl的主要内容,如果未能解决你的问题,请参考以下文章
如何将自定义 HTTP 请求标头添加到 Thymeleaf 生成的表单或链接?
如何将 Django 的 CSRF 令牌添加到 jQuery POST 请求的标头?