对于最新的稳定版本,请使用 Spring Integration 6.5.1! |
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
. 该模板反过来又委托给一个列表HttpMessageConverter
实例,从Message
有效载荷。 您可以配置这些转换器以及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
,它使用 JDKHttpURLConnection
. 通过以下方式还支持使用 Apache Commons HTTP 客户端CommonsClientHttpRequestFactory
,您可以注入(如前所示)。
对于出站网关,网关生成的回复消息包含请求消息中存在的所有消息头。 |
使用 Cookie
基本的 cookie 支持由transfer-cookies
属性。当设置为true
(默认值为false
)、一个Set-Cookie
响应中从服务器接收的标头将转换为Cookie
在回复消息中。然后,此标头将用于后续发送。这支持简单的有状态交互,例如:
…→logonGateway→…→doWorkGateway→…→logoffGateway→…
如果transfer-cookies
是false
任何Set-Cookie
收到的标头仍为Set-Cookie
并在后续发送时被删除。
空响应体
HTTP 是一种请求-响应协议。但是,响应可能没有正文,只有标头。在这种情况下, |
预期响应类型
继前面关于空响应正文的说明之后,如果响应确实包含正文,则必须提供适当的 |
从 5.5 版本开始,HttpRequestExecutingMessageHandler
暴露了一个extractResponseBody
标志(即true
默认情况下)仅返回响应正文,或返回整个ResponseEntity
作为回复消息有效负载,独立于提供的expectedResponseType
. 如果ResponseEntity
,这个标志被忽略了,整个ResponseEntity
被返回。