Skip to main content

単方向 Web メソッドの定義

InterSystems IRIS® データ・プラットフォーム Webサービスの場合、通常、Web メソッドを実行すると、メソッドに返りタイプがなく、何も返さない場合であっても、SOAP メッセージは返されます。この SOAP 応答メッセージの一般的な形式は以下のとおりです。

<?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>
   <MethodNameResponse xmlns="http://www.myapp.org"></MethodNameResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

まれに、一方向に Web メソッドを定義することが必要な場合があります。そのようなメソッドは値を返すことがなく、要求メッセージに SOAP 応答は必要ではありません。単方向の Web メソッドを定義するには、メソッドの返りタイプを %SOAP.OneWayOpens in a new tab として定義します。この場合は以下のようになります。

  • WSDL は、この Web メソッドに対して定義される出力を定義しません。

  • Web サービスは、SOAP メッセージを返しません (サービスによってヘッダ要素が追加される場合は除く。サブセクションを参照)。つまり、HTTP 応答メッセージには XML コンテンツが含まれません。

Note:

通常、単方向メソッドは使用されません。返りタイプがないメソッドの場合でも、要求と応答のペアを使用する方法のほうがより一般的であり、広くサポートされ、必要とされています。

"単方向 Web メソッドの WSDL の相違点" を参照してください。

単方向の Web メソッドおよび SOAP ヘッダ

Web メソッドによってヘッダ要素が追加される場合、HTTP 応答には以下のような XML コンテンツが含まれます。

<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' ...
  <SOAP-ENV:Header>
     header elements as set by the web service
 </SOAP-ENV:Header>
  <SOAP-ENV:Body></SOAP-ENV:Body>
</SOAP-ENV:Envelope>

動的に Web メソッドを単方向にする方法

Web メソッドが単方向になるように動的に再定義することもできます。そのためには、Web メソッドの定義内で Web サービスの ReturnOneWay() を呼び出します。以下はその例です。

Method HelloWorldDynamic(oneway as %Boolean = 0) As %String [ WebMethod ]
{
  If oneway {Do ..ReturnOneWay() }
  Quit "Hello world "
}

引数が 0 の場合、この Web メソッドは、本文に "Hello world" という文字列が含まれる SOAP 応答を返します。この引数が 1 の場合、このメソッドは SOAP 応答を返しません。

FeedbackOpens in a new tab