首页 > 解决方案 > 如何在 Apache Camel 的进程中设置 Header

问题描述

我想将我的标题内容类型从 text/html 更改为 application/json。我当前的标题是:{CamelHttpMethod=POST,, CONTENT_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"));
 }

}

可能吗?

标签: jsonresthttp-headers

解决方案


我认为您将Exchange标头与 HTTP 响应标头混为一谈。此外,虽然可以在处理器恕我直言的范围内设置 RESTful 属性,但您应该只将处理器用于与 Exchange 消息内容密切相关的业务逻辑,并使用 Camel 的REST DSL之类的东西来处理 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); 

推荐阅读