Spring 集成:为 http:outbound-channel-adapter 使用自定义 header
Spring integration: Using cusom header for http:outbound-channel-adapter
我有一种情况要使用 <int-http:outbound-channel-adapter ... />
发送一个 object,其中信息存储在 header。
当我按如下方式调用 <int-http:inbound-channel-adapter ... />
时,以下工作正常:
public void openTicket(final Profile profile, final Ticket ticket) {
final HttpHeaders headers = new HttpHeaders();
headers.set("profile", profile.toString());
final HttpEntity<Ticket> entity = new HttpEntity<Ticket>(ticket, headers);
template.exchange(URL, HttpMethod.PUT, entity, Ticket.class);
}
使用 header 中的给定配置文件调用我的 inboung-channel-adapter 成功:
<int-http:inbound-channel-adapter
channel="api_app_integration_request_channel"
supported-methods="PUT"
path="/process/ticket"
request-payload-type="*.model.Ticket"
mapped-request-headers="profile"
error-channel="internal-client-rest-ticket-error-channel"
>
<int-http:request-mapping consumes="application/json" />
</int-http:inbound-channel-adapter>
通过 outbound-channel-adapter 调用服务不起作用,调用本身有效,但我的 header 'profile' 不见了。
<int-http:outbound-channel-adapter
channel="client_rest_ticket_outbound_channel"
http-method="PUT"
url="http://localhost:8080/process/ticket"
mapped-request-headers="profile"
/>
我正在使用 Spring-Boot 1.3.6.RELEASE.
自定义 header(当前)默认映射到 X-
前缀;要在没有前缀的情况下映射它们,您需要连接 DefaultHttpHeaderMapper
并将 userDefinedHeaderPrefix
设置为空(或 ""
)以及您想要的出站 header 名称去贴图。
编辑:
<bean class="org.springframework.integration.http.support.DefaultHttpHeaderMapper" id="headerMapper"
p:userDefinedHeaderPrefix=""
p:inboundHeaderNames="profile"
p:outboundHeaderNames="profile"
/>
我有一种情况要使用 <int-http:outbound-channel-adapter ... />
发送一个 object,其中信息存储在 header。
当我按如下方式调用 <int-http:inbound-channel-adapter ... />
时,以下工作正常:
public void openTicket(final Profile profile, final Ticket ticket) {
final HttpHeaders headers = new HttpHeaders();
headers.set("profile", profile.toString());
final HttpEntity<Ticket> entity = new HttpEntity<Ticket>(ticket, headers);
template.exchange(URL, HttpMethod.PUT, entity, Ticket.class);
}
使用 header 中的给定配置文件调用我的 inboung-channel-adapter 成功:
<int-http:inbound-channel-adapter
channel="api_app_integration_request_channel"
supported-methods="PUT"
path="/process/ticket"
request-payload-type="*.model.Ticket"
mapped-request-headers="profile"
error-channel="internal-client-rest-ticket-error-channel"
>
<int-http:request-mapping consumes="application/json" />
</int-http:inbound-channel-adapter>
通过 outbound-channel-adapter 调用服务不起作用,调用本身有效,但我的 header 'profile' 不见了。
<int-http:outbound-channel-adapter
channel="client_rest_ticket_outbound_channel"
http-method="PUT"
url="http://localhost:8080/process/ticket"
mapped-request-headers="profile"
/>
我正在使用 Spring-Boot 1.3.6.RELEASE.
自定义 header(当前)默认映射到 X-
前缀;要在没有前缀的情况下映射它们,您需要连接 DefaultHttpHeaderMapper
并将 userDefinedHeaderPrefix
设置为空(或 ""
)以及您想要的出站 header 名称去贴图。
编辑:
<bean class="org.springframework.integration.http.support.DefaultHttpHeaderMapper" id="headerMapper"
p:userDefinedHeaderPrefix=""
p:inboundHeaderNames="profile"
p:outboundHeaderNames="profile"
/>