2014-10-29 53 views
2

我想用處理器時設置User-Agent頭:HTTP客戶端設置HTTP頭處理器:HTTP客戶端

我看到有mappedRequestHeaders選擇,但如何使用設置的User-Agent:Mozilla的對示例

要麼我缺少一些東西或缺乏處理器的spring-xd:header-richher。這將做什麼,我要尋找一個在普通的Spring集成方面:

<int:chain id="mychain" input-channel="http-request-data"> 
    <int:header-enricher> 
     <int:header name="User-Agent" value="curl/7.0.48"/>  
    </int:header-enricher> 
    <int-http:outbound-gateway url="${url}" http-method="GET" expected-response type="java.lang.String"/>  
    <int-file:outbound-channel-adapter directory="${output-folder}" filename-generator-expression="'${filename}'" /> 
</int:chain> 

回答

0

<int-http:outbound-gateway>request-factory屬性,可以注入到它HttpComponentsClientHttpRequestFactory豆。這ClientHttpRequestFactory提供了一些默認的User-Agent標題值。

既然是你自己的春天XD例如,您可以修改現有[XD_HOME]\xd\modules\processor\http-client\config\http-client.xml加入該bean定義:

<bean id="requestFactory" class="org.springframework.http.client.HttpComponentsClientHttpRequestFactory"/> 

<int-http:outbound-gateway request-factory="requestFactory"/> 

沒有改變離開其他一切。

另外,您應該將org.apache.httpcomponents:httpclient:4.3.5罐添加到該http-client模塊的lib

Commons HttpClient甚至可以指定httpclient.useragent System屬性來覆蓋默認值。

隨意提出(https://jira.spring.io/browse/XD)有關processor:header-enricher的問題。

當然你也可以用Groovy的script處理器現在克服它:

org.springframework.integration.support.MessageBuilder.withPayload(payload) 
    .copyHeaders(headers) 
    .setHeader('User-Agent', 'curl/7.0.48') 
    .build() 

HTH

+0

加:https://jira.spring.io/browse/XD-2294 – vladsfl 2014-10-30 21:44:10

0

Groovy腳本的方法是不錯..現在我加入處理器/ header.xml:Groovy腳本的方法很好..現在我加了processor/header.xml - 非常簡單我只需要一個頭文件

<channel id="input"/> 

<header-enricher input-channel="input" output-channel="output"> 
    <header name="${name}" value="${value}"/> 
</header-enricher> 

<channel id="output"/>