设置http标头处理器:http-client

时间:2014-10-29 17:47:03

标签: spring-xd

我想在使用处理器时设置User-Agent标头:http-client

我看到有mappedRequestHeaders选项,但是如何用来设置User-Agent:Mozilla例如

要么我缺少一些东西,要么缺少处理器的spring-xd:header-richher。这将在常规Spring Integration上下文中执行我正在寻找的内容:

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

2 个答案:

答案 0 :(得分:0)

<int-http:outbound-gateway>具有request-factory属性,可以向其注入HttpComponentsClientHttpRequestFactory bean。此ClientHttpRequestFactory提供了一些默认的User-Agent标头值。

由于它是您自己的Spring XD实例,您可以修改添加该bean定义的现有[XD_HOME]\xd\modules\processor\http-client\config\http-client.xml

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

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

保留其他所有内容而不做任何更改。

此外,您应该将org.apache.httpcomponents:httpclient:4.3.5 jar添加到该lib模块的http-client

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

答案 1 :(得分:0)

Groovy脚本方法很好..现在我添加了processor / 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"/>