2013-07-11 29 views
1

我是骆驼新手,最终陷入了代理问题。 我有我用来存储resulat从经常HTTP调用到一个文件中这样的路线:如何在使用camel-http时设置代理

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“ 我也试图通过增加&proxyHost=myHost&proxyPort=myPort给它设置在终点(在camel-http DOC说,你可以将其设置为httpenpoint)。

无工作..

伊尔还试图建立一个HTTP的管道从我通过谷歌阅读的帖子(例如根据部署目标选择一个或另一个):

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

但是这也不起作用...而且,我希望能够自动执行此操作,而无需根据安装位置更新驼峰上下文。

那么,你看到一种方法来设置它,并动态设置它吗?

回答

1

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

因此,对我来说,解决方案是从我的routeBuilder设置上下文的端点,如: getContext()。setProperty(“http.proxyHost”,10.100.100.1);
getContext()。setProperty(“http.proxyPort”,2111);

现在,它确实有效。

感谢那些一看!

0

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

+0

我猜对了:我在很多例子了解这一点,并有总是CXF客户端。感谢您的确认! – Marvin

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> 
相关问题