HTTP 出站组件
本节介绍 Spring Integration 的 HTTP 输出组件。
使用 HttpRequestExecutingMessageHandler
要配置 HttpRequestExecutingMessageHandler
,请编写类似于以下内容的 Bean 定义
<bean id="httpOutbound"
class="org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler">
<constructor-arg value="https://127.0.0.1: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="https://127.0.0.1:8080/example" />
<property name="outputChannel" ref="responseChannel" />
<property name="messageConverters" ref="messageConverterList" />
<property name="requestFactory" ref="customRequestFactory" />
</bean>
默认情况下,HTTP 请求是通过使用 SimpleClientHttpRequestFactory
的实例生成的,该实例使用 JDK 的 HttpURLConnection
。还支持使用 Apache Commons HTTP Client,方法是通过 CommonsClientHttpRequestFactory
进行注入(如前所示)。
对于输出网关,网关生成的回复消息包含请求消息中存在的所有消息头。 |
使用 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
。