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を使用しています。