json - 如何在 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"));
}
}
可能吗?
解决方案
我认为您将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);
推荐阅读
- javascript - React-Bootstrap 中的两个导航栏行
- algorithm - 算法 - 如何找到最高的人塔的高度
- angular - 如何为Angular中的自定义多选组件添加可选的换行和分页?
- javascript - 如何为Angular中数组中的每个项目使用contenteditable
- react-native - React Native)如何使用 React Native Expo 显示网站?
- php - 单击按钮时如何更改表单元素中的操作属性?
- python - 我在 python 中的猜谜游戏中遇到错误
- c# - 启动 ForEach 内的任务调试 NullReferenceException
- java - 在 JPanel 中并排创建两个按钮
- c - 如何在qnx [oracle虚拟机]中运行c程序?