spring 集成 dsl http 出站网关

spring integration dsl http outboundgateway

我们正在尝试使用 DSL 使用 HTTP OutboundGateway 调用 REST API。我们能够使用 GET 和 POST 进行调用并按预期获得响应。然而,我们无法想出一种在使用 DSL 进行此调用时传递 http headers 的方法。有很多关于 XML 方法的文章,但无法找到 DSL

的文档
return IntegrationFlows.from("FileContentChannel")
                 .handle(Http.outboundGateway("http://host:port/paymentinfo/")
                         .charset("UTF-8")
                         .httpMethod(HttpMethod.GET)
                         .headerMapper(headers)
                         .expectedResponseType(String.class))
                 .channel(MessageChannels.queue("APIResponseChannel"))
                 .get();

我们也尝试使用 DefaultHttpHeaderMapper,但没有成功。你能指导我们吗?

感谢加里..它用这个 更新1

return IntegrationFlows.from("FileContentChannel")
                     .handle(Http.outboundGateway("http://host:port/paymentinfo/")
                             .charset("UTF-8")
                             .httpMethod(HttpMethod.GET)
                             .mappedRequestHeaders("pay*")
                             .headerMapper(headerMapper())
                             .expectedResponseType(String.class))
                  .channel(MessageChannels.queue("APIResponseChannel"))
                     .get();

@Bean
    HeaderMapper headerMapper() {
        DefaultHttpHeaderMapper headerMapper = new DefaultHttpHeaderMapper();
        String[] headerNames = {"payment-hdr1","payment-hdr2"};
        headerMapper.setOutboundHeaderNames(headerNames);

        headerMapper.setUserDefinedHeaderPrefix("");
        return headerMapper;
    }
return IntegrationFlows.from("FileContentChannel")
             .enrichHeaders(h -> h.header("foo1", "bar")
                                  .header("foo2", "baz"))
             .handle(Http.outboundGateway("http://host:port/paymentinfo/")
                     .charset("UTF-8")
                     .httpMethod(HttpMethod.GET)
                     .mappedRequestHeaders("foo*")
                     .expectedResponseType(String.class))
             .channel(MessageChannels.queue("APIResponseChannel"))
             .get();

自定义 header 将(当前)获得 X- 前缀。

为避免这种情况,请使用自定义的 DefaultHeaderMapper 映射所需的 header 模式并使用 ""userDefinedHeaderPrefix