如何在使用camel-http时设置代理

时间:2013-07-11 16:53:02

标签: http proxy apache-camel fuseesb

我是骆驼的新手,最后还是陷入了代理问题。 我有一个这样的路由,用于存储从一个recurrent http调用到文件的resulat:

from("quartz://collector/test?cron=0+0/2+*+?+*+*")                      
    .setHeader(Exchange.HTTP_METHOD, constant("GET"))    
    .setHeader(Exchange.HTTP_QUERY, constant("Id=50")
.to("http://www.anywebsite/question.php")
    .setHeader(Exchange.FILE_NAME,constant("${date:now:yyyyMMddHHmmssSSS}.xml"))
.inOnly(someFolder);

我的问题是我需要指定一个代理(主机+端口)来完成,否则我会被迫试图获取信息。 我尝试了各种方法,包括从routeBuilder(通过getContext()。setProperties)和包含在“properties / property”标签中的bundle-context.xml设置“http.proxyHost”和“”http.proxyPort“。 我还尝试在端点(camel-http doc说明你可以将其设置为httpenpoint)中设置它,方法是向其添加&proxyHost=myHost&proxyPort=myPort

没有工作..

Il还尝试从我通过谷歌阅读的帖子中设置一个http-conduit(根据部署目标选择一个或另一个):

<http-conf:conduit name="*.http-conduit">
<!-- when behind proxy -->
        <http-conf:client Connection="close" ConnectionTimeout="3000" ReceiveTimeout="10000" ProxyServer="p-goodwat" ProxyServerPort="3128"/> 
<!-- when no proxy -->
    <http-conf:client Connection="close" ConnectionTimeout="3000" ReceiveTimeout="10000" />
</http-conf:conduit>

但这也不起作用......而且,我希望能够自动完成,而不必根据安装位置更新camel-context。

那么,你有没有办法设置它,并动态设置它?

3 个答案:

答案 0 :(得分:3)

经过几次尝试后,我设法让它工作了...看起来问题不是来自我的解决方案,而是因为我没有增加捆绑版本...因此,我的解决方案没有采取考虑到。

所以,对我有用的解决方案是从我的routeBuilder设置上下文的端点,如:     的getContext()的setProperty( “http.proxyHost”,10.100.100.1);
    的getContext()的setProperty( “把http.proxyPort”,2111);

现在,它确实有效。

感谢那些看过的人!

答案 1 :(得分:0)

我不认为这次http-conduit设置对您有用,因为您不使用任何CXF客户端来调用该服务。

答案 2 :(得分:0)

使用XML配置:

<camelContext id="context" xmlns="http://camel.apache.org/schema/spring">
    <properties>
        <property key="http.proxyHost" value="127.0.0.1"/>
        <property key="http.proxyPort" value="8888"/>
   </properties>
</camelContext>