第七章 定义单向 Web 方法

2024-07-28  本文已影响0人  Cache技术分享

第七章 定义单向 Web 方法

定义单向 Web 方法

对于 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.OneWay。在这种情况下:

注意:通常不应使用单向方法。请求-响应对更为常见、更受支持且更受期待 — 即使对于没有返回类型的方法也是如此。

单向 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 方法返回一个 SOAP 响应,其主体包含 Hello world。如果参数为 1,则此方法不返回 SOAP 响应。

上一篇下一篇

猜你喜欢

热点阅读