第8章 添付ファイル付きの SOAP を使用したバイナリーデータの送信
概要
SOAP 添付ファイルは、SOAP メッセージの一部としてバイナリーデータを送信するためのメカニズムを提供します。添付ファイルで SOAP を使用するには、SOAP メッセージを MIME マルチパートメッセージとして定義する必要があります。
概要 リンクのコピーリンクがクリップボードにコピーされました!
通常、SOAP メッセージはバイナリーデータを伝送しません。ただし、W3C SOAP 1.1 仕様では、MIME マルチパート/関連メッセージを使用して SOAP メッセージでバイナリーデータを送信できます。この手法は、添付ファイル付きの SOAP を使用して呼び出されます。SOAP 添付ファイルは、W3C の SOAP Messages with Attachments Note で定義されています。
Namespace リンクのコピーリンクがクリップボードにコピーされました!
MIME マルチパート/関連メッセージの定義に使用される WSDL 拡張機能は、名前空間 http://schemas.xmlsoap.org/wsdl/mime/ で定義されています。
以下の説明では、この namespace の前に mime
接頭辞が付くことを仮定しています。これを設定する WSDL definitions
要素のエントリーは 例8.1「コントラクトの MIME 名前空間の仕様」 に表示されます。
例8.1 コントラクトの MIME 名前空間の仕様
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
メッセージバインディングの変更 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトの SOAP バインディングでは、input
、output
、および fault
要素の最初の子要素は、データを表す SOAP メッセージのボディーを記述する soap:body
要素です。添付ファイル付き SOAP を使用する場合、soap:body
要素は mime:multipartRelated
要素に置き換えられます。
WSDL は、fault
メッセージに対する mime:multipartRelated
の使用をサポートしません。
mime:multipartRelated
要素は、メッセージボディーがバイナリーデータが含まれる可能性のあるマルチパートメッセージであることを Apache CXF に伝えます。要素の内容は、メッセージの部分とその内容を定義します。mime:multipartRelated
要素には、メッセージの個別部分を記述する 1 つ以上の mime:part
要素が含まれます。
最初の mime:part
要素には、通常デフォルトの SOAP バインディングに存在する soap:body
要素が含まれている必要があります。残りの mime:part
要素は、メッセージで送信される添付ファイルを定義します。
MIME マルチパートメッセージの説明 リンクのコピーリンクがクリップボードにコピーされました!
MIME マルチパートメッセージは、複数の mime:part
要素が含まれる mime:multipartRelated
要素を使用して記述されます。MIME マルチパートメッセージを完全に説明するには、次の手順を実行する必要があります。
-
MIME マルチパートメッセージとして送信する
input
またはoutput
メッセージで、エンクロージングメッセージの最初の子要素としてmime:mulipartRelated
要素を追加します。 -
mime:part
子要素をmime:multipartRelated
要素に追加し、そのname
属性を一意の文字列に設定します。 soap:body
要素をmime:part
要素の子として追加し、その属性を適切に設定します。注記コントラクトにデフォルトの SOAP バインディングがある場合、デフォルトのバインディングの対応するメッセージから
soap:body
要素を MIME マルチパートメッセージにコピーできます。-
別の
mime:part
子要素をmime:multipartReleated
要素に追加し、そのname
属性を一意の文字列に設定します。 mime:content
子要素をmime:part
要素に追加し、メッセージのこの部分の内容を記述します。MIME メッセージ部分の内容を完全に記述するために、
mime:content
要素には次の属性があります。Expand 表8.1 mime:content 属性 属性 説明 親メッセージ定義から、ネットワーク上の MIME マルチパートメッセージのこの部分の内容として使用される WSDL メッセージ
part
の名前を指定します。+
このメッセージ部分のデータの MIME タイプ。MIME タイプは構文 type
/
subtype を使用してタイプまたはサブタイプとして定義されます。+
image/jpeg
およびtext/plain
といった事前定義された MIME タイプは複数あります。MIME タイプは、Internet Assigned Numbers Authority (IANA) によって維持され、Multipurpose Internet Mail Extensions (MIME) パート 1: インターネットメッセージ本文 と Multipurpose Internet Mail Extensions (MIME) パート 2: メディアタイプ で詳細に説明されています。+
- 追加の MIME 部分ごとに、手順 [i303819] および [i303821] を繰り返します。
例 リンクのコピーリンクがクリップボードにコピーされました!
例8.2「添付ファイル付きの SOAP を使用したコントラクト」 は、X 線を JPEG 形式で保存するサービスを定義する WSDL フラグメントを示しています。イメージデータ xRay
は、xsd:base64binary
として保存され、MIME マルチパートメッセージの 2 番目の部分 imageData
にパッケージ化されます。入力メッセージの残り 2 つの部分である patientName
および patientNumber
は、SOAP ボディーの一部として MIME マルチパートイメージの最初の部分で送信されます。
例8.2 添付ファイル付きの SOAP を使用したコントラクト