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
に委譲することにより HTTP リクエストを実行します。次に、そのテンプレートは、HttpMessageConverter
インスタンスのリストに委譲して、Message
ペイロードから HTTP リクエスト本文を生成します。次の例に示すように、これらのコンバーターと 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 リクエストは、JDK HttpURLConnection
を使用する SimpleClientHttpRequestFactory
のインスタンスを使用して生成されます。Apache Commons HTTP クライアントの使用も、(前述のように) 挿入できる CommonsClientHttpRequestFactory
を通じてサポートされています。
送信ゲートウェイの場合、ゲートウェイによって生成される応答メッセージには、リクエストメッセージに存在するすべてのメッセージヘッダーが含まれます。 |
クッキーを使用する
基本的な Cookie サポートは、送信ゲートウェイの transfer-cookies
属性によって提供されます。true
に設定すると(デフォルトは false
)、レスポンスでサーバーから受信した Set-Cookie
ヘッダーは、レスポンスメッセージで Cookie
に変換されます。このヘッダーは、その後の送信で使用されます。これにより、次のような単純なステートフルな対話が可能になります。
…→logonGateway→…→doWorkGateway→…→logoffGateway→…
transfer-cookies
が false
の場合、受信した Set-Cookie
ヘッダーは応答メッセージ内で Set-Cookie
のままであり、後続の送信でドロップされます。
空のレスポンスボディ HTTP はリクエスト / レスポンスプロトコルです。ただし、レスポンスには本文がなく、ヘッダーのみが含まれる場合があります。この場合、 |
expected-response-type 空のレスポンス本文に関する前述の注意に加えて、レスポンスに本文が含まれている場合、適切な |
バージョン 5.5 以降、HttpRequestExecutingMessageHandler
は extractResponseBody
フラグ(デフォルトでは true
)を公開して、レスポンス本文のみを返すか、提供された expectedResponseType
とは関係なく、ResponseEntity
全体をレスポンスメッセージペイロードとして返します。ボディが ResponseEntity
に存在しない場合、このフラグは無視され、ResponseEntity
全体が返されます。