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 全体が返されます。