2

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

我看到有 mappedRequestHeaders 选项,但是如何使用来设置用户代理:例如 Mozilla

要么我缺少某些东西,要么 spring-xd 缺少处理器:header-enricher。这将做我在常规 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> 
4

2 回答 2

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"/>
于 2014-10-30T21:41:22.433 回答
0

<int-http:outbound-gateway>hasrequest-factory属性并且可以注入到它的bean HttpComponentsClientHttpRequestFactory。这ClientHttpRequestFactory提供了一些默认User-Agent的标头值。

由于它是您自己的 Spring 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.5jar 添加到该lib模块的http-client

Commons HttpClient 甚至允许指定httpclient.useragent系统属性来覆盖默认值。

随意提出(https://jira.spring.io/browse/XD)关于processor:header-enricher.

当然,您现在可以使用 Groovyscript处理器克服它:

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

高温高压

于 2014-10-30T18:13:08.437 回答