【发布时间】:2014-01-19 14:11:48
【问题描述】:
我正在使用 apache camel 进行 spring 的休息服务调用
现在我们需要在我们的 body 中发送 json 请求,以便使用 apache camel 在 GZIP 中传递。我尝试将 CONTENT_ENCODING 添加为 gzip,但它不起作用。请看代码
公共无效进程(交换交换){ exchange.setPattern(ExchangePattern.InOut); exchange.setProperty(Exchange.CHARSET_NAME, "UTF-8");信息 inMessage = exchange.getIn(); inMessage.setHeader(ACCEPT_HEADER, “应用程序/json”); inMessage.setHeader(CONTENT_TYPE, “应用程序/json”); inMessage.setHeader(Constants.ACCEPT_ENCODING, 常量.ACCEPT_ENCODING_TYPE); inMessage.setHeader(Exchange.CONTENT_ENCODING, "gzip"); inMessage.setBody(body);
在camelContext.xml中,
我们已经定义了
<route streamCache="true">
<from uri="direct:setUpload" />
<recipientList>
<simple>cxfrs://{{uploadSample.url}}?throwExceptionOnFailure=false</simple>
</recipientList>
<unmarshal ref="sampleParser" />
</route>
我们是否需要设置任何其他东西来 gzip 正文 JSON 请求
请帮助解决这个问题
问候 哈里
【问题讨论】:
-
在recipientList前加个gzip端点试试看。
-
感谢您的建议,我试过了,但没有解决问题,json请求在给出端点后没有被gzip压缩
-
可以在服务类方法中设置[@org.apache.cxf.annotations.GZIP][1]注解。 [1]:stackoverflow.com/questions/10784422/…
-
感谢您的建议,我收到错误消息,java.util.ArrayList 无法转换为 org.apache.cxf.message.MessageContentsList。如果类型变成字节数组,你知道类型转换器是否有问题
标签: java json apache rest apache-camel