执行路由时,内容类型标头未到达目的地。
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 组件,但两者都不适合我。有没有办法强制发送此标头?
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}");