我试图创建一个简单的应用程序,用户将在其中输入任何密钥,系统将发送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等 怎么可能。
答案 0 :(得分:1)
您必须在<header-enricher>
之前通过<int-http:outbound-gateway>
配置这些标头。甚至可能在同一个<chain>
。
之后,必须使用<int-http:outbound-gateway>
配置header-mapper
作为DefaultHttpHeaderMapper.outboundMapper()
bean的引用。并且必须使用userDefinedHeaderPrefix = null
和outboundHeaderNames
配置最后一个,并将所有需要的标头映射。