SoapMessageName (メソッド・キーワード)
使用法
応答メッセージの <part> 要素の既定名をオーバーライドするには、以下の構文を使用します。
Method name(formal_spec) As returnclass [ WebMethod, SoapMessageName = MyResponse ]
{ //implementation }
soapmessagename は、XML で有効な任意の識別子です。
詳細
このキーワードにより、応答メッセージの本文の子要素名を指定します。
既定値
このキーワードを省略すると、メッセージ名は、Web メソッド名の末尾に Response を追加したものになります。
Web メソッド名は、Web サービスの Web メソッド定義から取得されます。これは、そのメソッド名を変更しないと変更できません。
WSDL との関係
SoapMessageName キーワードは、Web サービスの WSDL の <messages> セクションと <types> セクションに影響します。例えば、以下の Web メソッドを考えてみます。
Method Add(a as %Numeric,b as %Numeric) As %Numeric [ SoapMessageName=MyResponseMessage,WebMethod ]
{
Quit a + b
}
この Web サービスでは、WSDL の <types> セクションと <messages> セクションは次のようになります。
<types>
<s:schema elementFormDefault="qualified" targetNamespace="http://www.mynamespace.org">
<s:element name="Add">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" name="a" type="s:decimal"/>
<s:element minOccurs="0" name="b" type="s:decimal"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="MyResponseMessage">
<s:complexType>
<s:sequence>
<s:element name="AddResult" type="s:decimal"/>
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</types>
<message name="AddSoapIn">
<part name="parameters" element="s0:Add"/>
</message>
<message name="AddSoapOut">
<part name="parameters" element="s0:MyResponseMessage"/>
</message>
既定では、メソッドで SoapMessageName キーワードを指定しないと、AddSoapOut メッセージには、MyResponseMessage の代わりに AddResponse という名前の要素が含められます。
SoapMessageName は、応答メッセージの子要素 (AddResult など) には影響しません。
SOAP ウィザードを使用して WSDL から Web サービスまたはクライアントを生成する場合、その WSDL に応じてこのキーワードが設定されます。
SOAP メッセージへの影響
Web サービスは、次のような応答メッセージを送信します。
<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Body>
<MyResponseMessage xmlns="http://www.mynamespace.org">
<AddResult>42</AddResult>
</MyResponseMessage>
</SOAP-ENV:Body>
既定では、メソッドで SoapMessageName キーワードを指定しないと、<MyResponseMessage> 要素は、代わりに <AddResponse> になります。