HTTP 出站组件
本节描述 Spring Integration 的 HTTP 出站组件。
使用 HttpRequestExecutingMessageHandler
要配置 HttpRequestExecutingMessageHandler,请编写一个类似于以下内容的 bean 定义:
<bean id="httpOutbound"
class="org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler">
<constructor-arg value="http://localhost:8080/example" />
<property name="outputChannel" ref="responseChannel" />
</bean>
此 bean 定义通过委托给 RestTemplate 来运行 HTTP 请求。
该模板又委托给 HttpMessageConverter 实例列表,以根据 Message 有效负载生成 HTTP 请求正文。
您可以配置这些转换器以及要使用的 ClientHttpRequestFactory 实例,如以下示例所示:
<bean id="httpOutbound"
class="org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler">
<constructor-arg value="http://localhost:8080/example" />
<property name="outputChannel" ref="responseChannel" />
<property name="messageConverters" ref="messageConverterList" />
<property name="requestFactory" ref="customRequestFactory" />
</bean>
默认情况下,HTTP 请求是使用 SimpleClientHttpRequestFactory 实例生成的,该实例使用 JDK HttpURLConnection。
还支持通过 CommonsClientHttpRequestFactory 使用 Apache Commons HTTP Client,您可以注入它(如前所示)。
|
对于出站网关,网关生成的回复消息包含请求消息中存在的所有消息头。 |
使用 Cookie
出站网关上的 transfer-cookies 属性提供了基本的 Cookie 支持。
当设置为 true(默认为 false)时,从服务器在响应中收到的 Set-Cookie 头会转换为回复消息中的 Cookie。
此头随后用于后续发送。
这使得简单的有状态交互成为可能,例如:
…→logonGateway→…→doWorkGateway→…→logoffGateway→…
如果 transfer-cookies 为 false,则收到的任何 Set-Cookie 头在回复消息中仍为 Set-Cookie,并在后续发送中被丢弃。
|
空响应体
HTTP 是一种请求-响应协议。
但是,响应可能没有正文,只有头。
在这种情况下, |
|
expected-response-type
除了前面关于空响应体的说明之外,如果响应确实包含正文,则必须提供适当的 |
从 5.5 版本开始,HttpRequestExecutingMessageHandler 暴露了一个 extractResponseBody 标志(默认为 true),用于仅返回响应体,或者将整个 ResponseEntity 作为回复消息有效负载返回,而与提供的 expectedResponseType 无关。
如果 ResponseEntity 中不存在正文,则忽略此标志并返回整个 ResponseEntity。