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 客戶端,您可以注入它(如前所示)。
| 對於出站閘道器,由閘道器生成的回覆訊息包含請求訊息中存在的所有訊息頭。 |
使用 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。