HTTP 出站组件
本节描述了 Spring 集成的 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 ClientCommonsClientHttpRequestFactory
,您可以注入它(如前所述)。
对于出站网关,网关生成的回复消息包含请求消息中存在的所有消息标头。 |
使用 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
返回。