SoapAction (メソッド・キーワード)
使用法
このメソッドを Web メソッドとして使用する場合に HTTP ヘッダで使用する SOAP アクションを指定するには、以下の構文を使用します。
Method name(formal_spec) As returnclass [ WebMethod, SoapAction = soapaction ]
{ //implementation }
soapaction は以下のいずれかになります。
-
"[ default ]" — InterSystems IRIS は、SOAP アクションの既定値である NAMESPACE/Package.Class.Method を使用します。
-
"customValue" — InterSystems IRIS は SOAP アクションとして customValue を使用します。値は、SOAP 要求の目的を示す URI である必要があります。
カスタム値を指定する場合は、それが Web サービス内の各 Web メソッド内で一意であるか、Web メソッドごとに SoapRequestMessage キーワードを指定する (また、そのキーワードのために一意の値を使用する) 必要があります。
-
"" — InterSystems IRIS は SOAP アクションとして空の値を使用します。これは一般的なケースではありません。
詳細
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 >...