2013-07-11 34 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> 
相關問題