【问题标题】:How to add request headers to outboundGateway spring integration dsl如何将请求标头添加到 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");

有人可以帮我吗

【问题讨论】:

    标签: spring-integration spring-integration-dsl


    【解决方案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 使其工作
    • 或者你可以使用*。抱歉,一直很忙,但很高兴您在没有帮助的情况下解决了这个问题!
    • 无论如何感谢您的帮助,我不想使用 * 因为我有一些我不想发送给客户端的流标头变量
    猜你喜欢
    • 2019-03-10
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    相关资源
    最近更新 更多