我想在使用处理器时设置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>
答案 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"/>