【问题标题】:how set Header in a process in Apache Camel如何在 Apache Camel 的进程中设置 Header
【发布时间】:2019-02-17 11:44:13
【问题描述】:

我想将我的标题内容类型从 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"));
 }

}

有可能吗?

【问题讨论】:

    标签: json rest http-headers


    【解决方案1】:

    我认为您将 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); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多