我正在使用Apache Camel蓝图,我的路由是从localhost上端口8081的URL触发的。此路由生成一个文件,但问题是该文件是一个没有显示HTML的二进制文件。
然后我将浏览器导航到触发网址的http://localhost:8081/foo。
我不明白是什么导致它输出二进制文件而不是文本文件?我想我必须以某种方式改变身体?
<route id="url1">
<from uri="netty4-http:http://0.0.0.0:8081/foo" />
<to uri="http://www.google.com/?bridgeEndpoint=true" />
<to uri="file:/test"/>
</route>
更新:我认为问题是来自www.google.com的内容是gzip。当我查看文档中的bridgeEndpoint参数时,它提到了一些关于gzip的内容......现在我不确定,因为我在另一个网站上尝试过它仍然无法正常工作。
我的日志中的这一行可能是相关的。
writing body: DefaultFullHttpResponse(decodeResult: success,
version: HTTP/1.1, content: UnpooledUnsafeDirectByteBuf(ridx: 0, widx: 0, cap: 0))
更新:我发现我是否这样做:
<from uri="timer:secondfoo?period=20s" />
替换from,然后它可以工作。嗯......从netty4-http流出的东西会导致问题。
更新:我发现了一些有用的东西!痴迷得到了回报。
<route id="url1">
<from uri="netty-http:http://0.0.0.0:8081/foo" />
<removeHeaders pattern="*" />
<setBody>
<simple></simple>
</setBody>
<setHeader headerName="CamelHttpMethod">
<constant>GET</constant>
</setHeader>
<to uri="http://www.google.com/?bridgeEndpoint=true" />
<to uri="file:/test"/>
</route>
答案 0 :(得分:1)
您可以将邮件转换为String
类型,然后将其转换为基于文本的
<route id="url1">
<from uri="netty4-http:http://0.0.0.0:8081/foo" />
<to uri="http://www.google.com/?bridgeEndpoint=true" />
<convertBodyTo type="String"/>
<to uri="file:/test"/>
</route>