Spring集成:向HTTP出站请求添加其他Headers参数。

时间:2016-06-02 12:39:54

标签: java spring-integration

我试图创建一个简单的应用程序,用户将在其中输入任何密钥,系统将发送get请求。我想为此GET请求添加一些自定义标头。在普通的java中,我使用以下代码。

URL url= new URL(CMRAuth.RESOURCE);
        connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        connection.setRequestProperty("Accept", "application/json");
        connection.setRequestProperty("OData-MaxVersion", "4.0");
        connection.setRequestProperty("OData-Version", "4.0");
        connection.addRequestProperty("Authorization", "Bearer "+cmrAuth.getAuthenticationResult().getAccessToken());
        System.out.println("code:"+connection.getResponseCode());

它工作正常。我想用Spring-Integration出站网关做到这一点。这就是我的xml的样子。

<int-stream:stdin-channel-adapter id="consoleIn"
    channel="requestChannel">
    <int:poller fixed-delay="1000" max-messages-per-poll="1" />
</int-stream:stdin-channel-adapter>
<int:channel id="requestChannel" />

<int:chain input-channel="requestChannel">
    <int-http:outbound-gateway
        url="https://example.com"
        expected-response-type="java.lang.String" http-method="GET"/>
    <int:service-activator ref="accountResponseHandler" />
</int:chain>

我想给它所有这些额外的标题:Accept,OData-Version,Authorization等 怎么可能。

1 个答案:

答案 0 :(得分:1)

您必须在<header-enricher>之前通过<int-http:outbound-gateway>配置这些标头。甚至可能在同一个<chain>

之后,必须使用<int-http:outbound-gateway>配置header-mapper作为DefaultHttpHeaderMapper.outboundMapper() bean的引用。并且必须使用userDefinedHeaderPrefix = nulloutboundHeaderNames配置最后一个,并将所有需要的标头映射。