I have route below. from("direct:getJson") .removeHeaders("CamelHttp*") .setHeader("Accept", constant("application/json")) .setHeader("Cache-Control", constant("no-cache")) .setHeader(Exchange.HTTP_METHOD, constant(HttpMethods.POST)) *.setHeader(Exchange.CONTENT_TYPE, constant("application/json"))* .process(new Processor() { public void process(Exchange exchange) throws Exception { String userCredentials = "username:password"; final String auth = "Basic " + new String(new Base64().encode(userCredentials.getBytes())); exchange.getOut().setHeader("Authorization", auth); exchange.getOut().setBody("{"key","value"}"); } }) .to("http4:www.myhost.com");
and request fails with http 500 (Internal Server Error). No feedback from server owner. But it works with Rest client and curl. So, I decided to use wireshark. And I see that CONTENT_TYPE sent as text/plain. Tried few other combinations but no luck. But it worked after I set it after process. from("direct:getJson") .removeHeaders("CamelHttp*") .setHeader(Exchange.HTTP_METHOD, constant(HttpMethods.POST)) .process(new Processor() { public void process(Exchange exchange) throws Exception { String userCredentials = "username:password"; final String auth = "Basic " + new String(new Base64().encode(userCredentials.getBytes())); exchange.getOut().setHeader("Authorization", auth); exchange.getOut().setBody("{"key","value"}"); } }) *.setHeader(Exchange.CONTENT_TYPE, constant("application/json")) .setHeader("Accept", constant("application/json")) .setHeader("Cache-Control", constant("no-cache"))* .to("http4:www.myhost.com"); What is the reason?. Is it a bug or normal scenario? If it is normal, what is the rule? Many thanks in advance! -- View this message in context: http://camel.465427.n5.nabble.com/header-changes-just-after-process-tp5794482.html Sent from the Camel - Users mailing list archive at Nabble.com.