SOAP 1.1のContent-Type(text/xml)

text/xmlとSOAPActionヘッダーを使用したSOAP 1.1 Webサービスリクエスト用のContent-Typeヘッダーを設定します。SOAP 1.2への移行についても解説します。

XML/SOAP

詳細な説明

SOAP 1.1 Content-Type

SOAP 1.1はContent-Typeとしてtext/xmlを使用し、アクションは別のSOAPAction HTTPヘッダーで送信します。

ヘッダー

Content-Type: text/xml; charset=utf-8
SOAPAction: "http://example.com/GetWeather"

SOAP 1.2との主な違い

SOAP 1.1では、アクションはContent-Typeの一部ではありません。専用のSOAPActionヘッダーに記載されます。このヘッダーは:

  • 必須(空でも可:SOAPAction: ""
  • メッセージの意図を識別するURIを含む
  • ファイアウォールやルーターがメッセージルーティングに使用

SOAP 1.1 Envelope

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:web="http://example.com/">
  <soap:Body>
    <web:GetWeather>
      <web:City>Tokyo</web:City>
    </web:GetWeather>
  </soap:Body>
</soap:Envelope>

Charsetの重要性

text/xmlはcharsetが指定されない場合US-ASCIIがデフォルトになるため、国際文字のエンコーディング問題を避けるために必ずcharset=utf-8を含めてください。

移行パス

新しいサービスを構築する場合は、application/soap+xmlのSOAP 1.2を優先してください。SOAP 1.1はレガシーと見なされていますが、エンタープライズ環境では広く展開されています。

curlの例

curl -X POST \
  -H "Content-Type: text/xml; charset=utf-8" \
  -H 'SOAPAction: "http://example.com/GetWeather"' \
  -d @request.xml \
  https://service.example.com/soap

ユースケース

レガシーSOAP 1.1 Webサービスとの統合時に使用します。多くのエンタープライズシステム、政府API、銀行サービスがまだSOAP 1.1とtext/xmlを使用しています。

試してみる — Content-Type Header Builder

フルツールを開く