第三章 将命名空间声明添加到 SOAP 信封
将命名空间声明添加到 SOAP 信封
要将命名空间声明添加到由给定 Web 服务发送的 SOAP 消息的 SOAP 信封(<SOAP-ENV:Envelope> 元素)中,请修改该 Web 服务的每个 Web 方法,以便它调用 Web 服务的 %AddEnvelopeNamespace() 方法。此方法具有以下签名:
Method %AddEnvelopeNamespace(namespace As %String,
prefix As %String,
schemaLocation As %String,
allowMultiplePrefixes As %Boolean) As %Status
其中:
namespace是需要添加的命名空间。prefix是用于此命名空间的可选前缀。如果省略此参数,则会生成前缀。schemaLocation是此命名空间的可选架构位置。allowMultiplePrefixes控制给定命名空间是否可以使用不同的前缀多次声明。如果此参数为1,则给定命名空间可以使用不同的前缀多次声明。如果此参数为0,则如果您为同一命名空间添加具有不同前缀的多个声明,则仅使用最后提供的前缀。
检查必需的元素和属性
默认情况下,Web 服务不会检查标记为必需的属性对应的元素和属性是否存在。要使 Web 服务检查此类元素和属性是否存在,请将 Web 服务的 SOAPCHECKREQUIRED 参数设置为 1。出于兼容性原因,此参数的默认值为 0。
控制空字符串参数的形式
通常,如果省略参数,Web 服务会省略其发送的 SOAP 消息中的相应元素。要更改此设置,请在 Web 服务类中将 XMLIGNORENULL 参数设置为 1;在这种情况下,SOAP 消息包含一个空元素。
注意:此参数仅影响类型为 %String的 Web 方法参数。
控制 SOAP 响应的消息名称
在 Web 服务中,可以控制从 Web 方法收到的响应中使用的消息名称。默认情况下,此消息名称是 Web 方法的名称,末尾附加有 Response。以下示例显示了来自名为 Divide 的 Web 方法的响应;响应消息名称为 DivideResponse。
<SOAP-ENV:Body>
<DivideResponse xmlns="http://www.myapp.org">
<DivideResult>.5</DivideResult>
</DivideResponse>
</SOAP-ENV:Body>
要指定不同的响应消息名称,请在 Web 方法定义中设置 SoapMessageName 关键字。
请注意,无法更改调用给定 Web 方法的 SOAP 消息的名称;此消息的名称是方法的名称。但是,可以覆盖 HTTP 请求中给出的 SOAP 操作;请参阅覆盖默认 HTTP SOAP 操作。