使用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