このメソッドを HTTP 経由の Web メソッドとして呼び出す場合に HTTP ヘッダで使用する SOAP アクションを指定します。Web サービスまたは Web クライアントとして定義されているクラス内でのみ適用されます。
詳細
Web メソッドの SOAP アクションは、通常、SOAP 要求メッセージの転送に使用されます。例えば、ファイアウォールは、SOAP 要求メッセージを適切にフィルタ処理するためにこれを使用できます。InterSystems IRIS Web サービスのサービスは、SOAP アクションをそのメッセージ自体と組み合わせて使用して、要求メッセージの処理方法を決定します。
このキーワードにより、このメソッドを Web メソッドとして呼び出す場合に使用する HTTP SOAP アクションを指定できます。SOAP 1.1 の場合、SOAP アクションは、SOAPAction HTTP ヘッダとして含まれます。SOAP 1.2 の場合は、Content-Type HTTP ヘッダ内に含まれます。
既定値
SoapAction キーワードを省略すると、SOAP アクションは以下のような形式になります。
NAMESPACE/Package.Class.Method
NAMESPACE は Web サービスの NAMESPACE パラメータの値、Package.Class は Web サービス・クラスの名前、Method は Web メソッドの名前です。
WSDL との関係
SoapAction キーワードは、Web サービスの WSDL の <binding> セクションに影響します。例えば、以下の Web メソッドを考えてみます。
Method Add(a as %Numeric,b as %Numeric) As %Numeric [ SoapAction = MySoapAction,WebMethod ]
{
Quit a + b
}
この Web サービスでは、WSDL の <binding> セクションは次のようになります。
<binding name="MyServiceNameSoap" type="s0:MyServiceNameSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="Add">
<soap:operation soapAction="MySoapAction" style="document"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
既定では、メソッドで SoapAction キーワードを指定しないと、<soap:operation> 要素が次のようになる場合があります。
<soap:operation soapAction="http://www.mynamespace.org/ROBJDemo.BasicWS.Add" style="document"/>
SOAP ウィザードを使用して WSDL から InterSystems IRIS Web サービスのサービスまたはクライアントを生成する場合、その WSDL に応じてこのキーワードが設定されます。
メッセージへの影響
前述の Web メソッドでは、Web サービスは次の形式の要求メッセージを想定します (SOAP 1.1 の場合)。
POST /csp/gsop/ROBJDemo.BasicWS.cls HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; InterSystems IRIS;)
Host: localhost:8080
Connection: Close
Accept-Encoding: gzip
SOAPAction: MySoapAction
Content-Length: 379
Content-Type: text/xml; charset=UTF-8
<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope >...
既定では、メソッドで SoapAction キーワードを指定しないと、SOAPAction の行が次のようになる場合があります。
SOAPAction: http://www.mynamespace.org/ROBJDemo.BasicWS.Add
SOAP 1.2 では、細部が多少異なります。この場合、Web サービスは次の形式の要求メッセージを想定します。
POST /csp/gsop/ROBJDemo.BasicWS.cls HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; InterSystems IRIS;)
Host: localhost:8080
Connection: Close
Accept-Encoding: gzip
Content-Length: 377
Content-Type: application/soap+xml; charset=UTF-8; action="MySoapAction"
<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope >...