Json 如何在Apache Camel中设置进程头

Json 如何在Apache Camel中设置进程头,json,rest,http-headers,Json,Rest,Http Headers,我想将标题内容类型从text/html更改为application/json。 我当前的头是:{CamelHttpMethod=POST,,CONTENT\u TYPE=application/json} 我想删除Content Type=text/html;charset=UTF-8,通过在如下过程中设置标头: public void process(Exchange exchange) throws Exception { String mainBody = exchange.getI

我想将标题内容类型从text/html更改为application/json。 我当前的头是:{CamelHttpMethod=POST,,CONTENT\u TYPE=application/json}

我想删除Content Type=text/html;charset=UTF-8,通过在如下过程中设置标头:

   public void process(Exchange exchange) throws Exception {
String mainBody = exchange.getIn().getBody().toString();

JsonReader reader = Json.createReader(new StringReader(mainBody));
JsonObject body = reader.readObject();     
reader.close();
exchange.getIn().setHeaders(exchange.CONTENT_TYPE, simple("application/json"));
/System.out.println("your header" + exchange.getIn().getHeaders());
exchange.getIn().setBody(body.getJsonObject("API3"));
 }
}


有可能吗?

我认为您将标头与HTTP响应标头混为一谈。此外,虽然可以在处理器IMHO的范围内设置RESTful属性,但您只应将处理器用于与Exchange消息内容密切相关的业务逻辑,并使用类似Camel的方法来处理REST头

下面是一个可能的示例:

    rest().path("/dummy")
          .get()
          .route()
            .setHeader(Exchange.HTTP_RESPONSE_CODE, simple("200"))
            .setHeader(Exchange.CONTENT_TYPE, simple("application/json"))
          .to("bean:" + DUMMY_BEAN_NAME); 

我认为您将标头与HTTP响应标头混为一谈。此外,虽然可以在处理器IMHO的范围内设置RESTful属性,但您只应将处理器用于与Exchange消息内容密切相关的业务逻辑,并使用类似Camel的方法来处理REST头

下面是一个可能的示例:

    rest().path("/dummy")
          .get()
          .route()
            .setHeader(Exchange.HTTP_RESPONSE_CODE, simple("200"))
            .setHeader(Exchange.CONTENT_TYPE, simple("application/json"))
          .to("bean:" + DUMMY_BEAN_NAME);