如何从蓝图中调用Apache Camel的URL并将数据返回到文本文件?

时间:2015-05-18 12:19:21

标签: apache-camel

我正在使用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>

1 个答案:

答案 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>