我使用Apache Camel蓝图,我的路由是从本地主机上端口8081的URL触发的。这个路由生成一个文件,但问题是该文件是一个没有显示HTML的二进制文件。
然后在浏览器中导航到http://localhost:8081/foo,这会触发URL。
我不明白是什么导致它输出二进制文件而不是文本文件?我想我必须以某种方式改变身体?
<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,然后它就工作了。嗯…从nety4 -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>
您可以将消息转换为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>