Content-Type 标头无法使用 Apache Camel 到达目的地

问题描述 投票:0回答:1

执行路由时,内容类型标头未到达目的地。

restConfiguration()
 .host("localhost")
 .port(8082)

from("seda:my-route")
  .setHeader(RestConstants.CONTENT_TYPE, constant("application/json"))
  .to("rest:get:/docp/supply-chain2/v1/invoice-responses")

我尝试使用处理器从路由添加标头,但它不起作用。使用 apache 骆驼常量和纯文本。我尝试过 HTTP 和 REST 组件,但两者都不适合我。有没有办法强制发送此标头?

apache-camel content-type spring-camel
1个回答
0
投票

GET 方法默认不发送 header“Content-Type”,你必须有一个 body(不同于 null),然后使用 getWithBody=true 选项强制发送,这样你就可以发送 header 了:

from("direct:start").routeId("hello")
    .setHeader(HttpConstants.CONTENT_TYPE, constant("application/json"))
    .setBody(constant("")) // use this and the Content-Type will be sent
    //.setBody(constant(null)) // use this and the Content-Type will not be sent
    .to("http://httpbin.org/anything?httpMethod=GET&getWithBody=true") // set getWithBody=false (the default) and the ContentType will not be sent
                                                                       // sorry if stating the obvious: if you use anything but GET, this is not needed
.log("${body}");
© www.soinside.com 2019 - 2024. All rights reserved.