HTTP 出站元件
本節介紹 Spring Integration 的 HTTP 出站元件。
使用 HttpRequestExecutingMessageHandler
要配置 HttpRequestExecutingMessageHandler
,編寫類似如下的 Bean 定義:
<bean id="httpOutbound"
class="org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler">
<constructor-arg value="https://: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://: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,您可以注入它(如前所示)。
對於出站閘道器,閘道器生成的回覆訊息包含請求訊息中存在的所有訊息頭。 |
使用 Cookies
出站閘道器上的 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
。