使用Apache Camel-Http组件不会填充为GET方法设置Content-Type的内容。

exchange.getIn().setHeader(Exchange.CONTENT_TYPE, "application/json");


而使用POST方法时同样有效。

理解没有方法GET的主体。奇怪的是,如果将body设置为空string(“”),则传递Content-Type,但方法类型也更改为POST。

exchange.getIn().setBody("");


2.13.1是我当前正在使用的Camel版本。也尝试了最新版本,仍然相同。有什么我想念的。

服务要求传递Content-Type。

最佳答案

在Camel源码中有针对这种情况的测试:https://github.com/apache/camel/blob/master/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProducerContentTypeTest.java

在两个测试案例中,都需要设置主体。您应该在camel-http4中看到以下内容:

https://github.com/apache/camel/blob/master/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpProducer.java#L482-L582

还有骆驼http:

https://github.com/apache/camel/blob/master/components/camel-http/src/main/java/org/apache/camel/component/http/HttpProducer.java#L447-L506

如果决定使用Http4 / http组件,则需要设置一个正文。

关于nabble的讨论也非常古老:
http://camel.465427.n5.nabble.com/Http4-Set-Header-Content-Type-not-passing-through-to-the-HTTP-Request-td5746414.html

10-06 05:39
查看更多