Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

SoapBodyUse

このクラスで定義される Web メソッドのエンコードを指定します。このキーワードは、Web サービス・クラスおよび Web クライアント・クラスにのみ適用されます。

使用法

このクラスの Web メソッドの入力および出力により使用されるエンコードを指定するには、以下の構文を使用します。

Class MyApp.MyClass [ SoapBodyUse = soapbodyuse ] 
{
//class members
}

soapbodyuse は以下のいずれかになります。

  • literal (既定値) — このクラスの Web メソッドは、リテラル・データを既定で使用します。つまり、SOAP メッセージの <Body> の中の XML は、WSDL で提供されるスキーマと一致します。

  • encoded — このクラスの Web メソッドは、SOAP でエンコードされたデータを既定で使用します。つまり、SOAP メッセージの <Body> の中の XML では、以下の仕様に従い、使用される SOAP のバージョンに応じて SOAP エンコードを使用します。

Important:

手動で作成した Web サービスでは、通常はこのキーワードの既定値が最適な値となります。SOAP ウィザードで WSDL から Web クライアントまたは Web サービスを生成すると、このキーワードはその WSDL に最適に設定されます。この値を変更すると、Web クライアントまたは Web サービスは機能しなくなる場合があります。

詳細

このキーワードにより、このクラスで定義された任意の Web メソッドが使用する既定のエンコードを指定します。これは、このトピックのサブセクションでも説明しますが、このクラスの ELEMENTQUALIFIED および XMLELEMENT パラメータの既定値も制御します。

SoapBodyUse メソッド・キーワードまたは SoapBodyUse クエリ・キーワードを使用して、個々のメソッドのキーワードをオーバーライドできます。

サブクラスへの影響

このキーワードは継承されません。

既定値

既定値は literal です。SOAP 標準 v1.1 (Chapter 5Opens in a new tab) では、Web メソッドで SOAP エンコードを使用するように規定しています。ただし、.NET を含むほとんどの SOAP では、リテラル・スタイルを使用しています。

WSDL との関係

SoapBodyUse キーワードにより、WSDL の <binding> セクション内の <soap:body> 要素の use 属性の値を指定します。例えば、SoapBodyUse が literal の場合、WSDL は次のようになります。

...
<binding name="MyServiceNameSoap" 
 ...
    <soap:binding ...
    <operation name="Add">
        <soap:operation ...>
        <input>
            <soap:body use="literal"/>
        </input>
        <output>
            <soap:body use="literal"/>
        </output>
    </operation>
</binding>
...

一方、SoapBodyUse が encoded の場合は、WSDL は次のようになります。

...
<binding name="MyServiceNameSoap" ...
    <soap:binding ...
    <operation name="Add">
        <soap:operation .../>
        <input>
            <soap:body use="encoded" namespace="http://www.mynamespace.org" 
                       encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
        </input>
        <output>
            <soap:body use="encoded" namespace="http://www.mynamespace.org" 
                       encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
        </output>

    </operation>
</binding>
...

SOAP 1.2 では、encodingStyle 属性は次のようになります。

encodingStyle="http://www.w3.org/2003/05/soap-encoding"

SoapBodyUse キーワードでは、各 Web メソッドに対する <message> 要素の <part> 要素の内容も決定します。

  • SoapBodyUse が literal の場合、各 <part> 要素には、element 属性が含まれます。以下に例を示します。

    <part name="parameters" element="s0:Add"/>
    

    別の例を示します。

    <part name="b" element="s0:b"/>
    
  • SoapBodyUse が encoded の場合、各 <part> 要素には、element 属性でなく、type 属性が含まれます。以下に例を示します。

    <part name="a" type="s0:ComplexNumber"/>
    

SoapBodyUse は、ELEMENTQUALIFIED および XMLELEMENT パラメータの既定値も制御します。これも、WSDL に影響します。

SOAP メッセージへの影響

ドキュメント・スタイルのメッセージを使用する Web メソッドでは、Web サービスは次のような応答メッセージを送信します。

<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' 
                   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 
                   xmlns:s='http://www.w3.org/2001/XMLSchema'>
   <SOAP-ENV:Body>
      <AddResponse ...>
...

一方、エンコードスタイルのメッセージを使用する Web サービスでは、応答メッセージは次のようになります。

<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' 
                   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 
                   xmlns:s='http://www.w3.org/2001/XMLSchema' 
                   xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/' 
                   xmlns:tns='http://www.mynamespace.org' 
                   xmlns:types='http://www.mynamespace.org'>
   <SOAP-ENV:Body SOAP-ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>
      <types:AddResponse>
...

Web サービスまたは Web クライアントのパラメータの既定への影響

ELEMENTQUALIFIED パラメータの既定値は、SoapBodyUse キーワードによって異なります。

SoapBodyUse の値 ELEMENTQUALIFIED の既定値 メモ
literal 1 elementFormDefault="qualified"
encoded 0 elementFormDefault="unqualified"

XMLELEMENT パラメータの既定値も、SoapBodyUse キーワードによって異なります。

SoapBodyUse の値 XMLELEMENT の既定値 メモ
literal 1 メッセージ・パートには element 属性があります。
encoded 0 メッセージ・パートには type 属性があります。

ELEMENTQUALIFIED パラメータと XMLELEMENT パラメータの詳細は、"オブジェクトの XML への投影" を参照してください。

%XML.DataSet での使用

タイプ %XML.DataSetOpens in a new tab のオブジェクトの場合、SoapBindingStyle キーワードと SoapBodyUse キーワードのすべての組み合わせがサポートされるわけではありません。詳細は、SoapBindingStyle クラス・キーワードのエントリを参照してください。

関連項目

FeedbackOpens in a new tab