添付ファイル付きSOAPのContent-Type(MTOM)

SOAP MTOM(Message Transmission Optimization Mechanism)でmultipart/relatedを使用するContent-Typeヘッダーを設定します。XOPとバイナリ最適化を解説します。

XML/SOAP

詳細な説明

MTOM / multipart/related

MTOM(Message Transmission Optimization Mechanism)は、multipart/relatedを使用してバイナリ添付ファイル付きのSOAPメッセージを効率的に送信し、Base64エンコーディングのオーバーヘッドを回避します。

ヘッダー値

Content-Type: multipart/related; type="application/xop+xml"; start="<root.message@example.com>"; start-info="application/soap+xml"; boundary=MIME_boundary

パラメータの説明

パラメータ 目的
type ルートパートのMIMEタイプ(MTOMの場合application/xop+xml
start ルートパートのContent-ID
start-info ルートの元のContent-Type(XOP処理前)
boundary パートを区切るboundary文字列

メッセージ構造

--MIME_boundary
Content-Type: application/xop+xml; charset=utf-8; type="application/soap+xml"
Content-ID: <root.message@example.com>
Content-Transfer-Encoding: 8bit

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
  <soap:Body>
    <UploadDocument>
      <data>
        <xop:Include href="cid:attachment1@example.com"
                     xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
      </data>
    </UploadDocument>
  </soap:Body>
</soap:Envelope>

--MIME_boundary
Content-Type: application/pdf
Content-ID: <attachment1@example.com>
Content-Transfer-Encoding: binary

[生のPDFバイナリデータ - Base64エンコードされていない]

--MIME_boundary--

なぜMTOMなのか?

MTOMなしでは、SOAPのバイナリデータはBase64エンコードする必要があり、サイズが約33%増加します。MTOMはXOP(XML-binary Optimized Packaging)を使用してバイナリパートを直接参照し、バイナリデータを生の形式のまま保持します。

使用する場面

  • SOAPサービスでの大容量ファイル添付
  • 高パフォーマンスのエンタープライズ統合
  • 医療画像(DICOM over SOAP)
  • ドキュメント管理システム

ユースケース

医療画像システム、ドキュメント管理プラットフォーム、金融データ交換など、大容量バイナリ添付ファイルを扱うエンタープライズSOAPサービスとの統合時に使用します。

試してみる — Content-Type Header Builder

フルツールを開く