第四章 覆盖 HTTP SOAP 操作和请求消息名称
覆盖 HTTP SOAP 操作和请求消息名称
当通过 HTTP 调用 Web 方法时,HTTP 标头必须包含 SOAP 操作,该操作是指示 SOAP HTTP 请求意图的 URI。对于 SOAP 1.1,SOAP 操作作为 SOAPAction HTTP 标头包含在内。对于 SOAP 1.2,它包含在 Content-Type HTTP 标头中。
SOAP 操作指示 SOAP HTTP 请求的意图。该值是一个标识意图的 URI;它通常用于路由入站 SOAP 消息。例如,防火墙可以使用此标头适当地过滤 HTTP 中的 SOAP 请求消息。
对于 Web 服务中的 Web 方法,SOAPAction HTTP 标头默认具有以下形式(对于 SOAP 1.1):
SOAPAction: NAMESPACE/Package.Class.Method
其中 NAMESPACE 是 Web 服务的 NAMESPACE 参数的值,Package.Class.Method 是用作 Web 方法的方法的名称。例如:
SOAPAction: http://www.myapp.org/GSOAP.WebService.GetPerson
要覆盖此设置,请在 Web 方法的定义中为 SoapAction 方法关键字指定一个值。指定一个带引号的字符串,表示 SOAP 请求的意图。在典型情况下,Web 服务中的每个 Web 方法都会为 SoapAction 指定一个唯一值(如果有)。
如果 SoapAction 在该 Web 服务中不唯一,则每个方法都必须具有唯一的 SoapRequestMessage 方法关键字值。此关键字指定请求消息的 SOAP 主体中的顶部元素的名称。请注意,SoapRequestMessage 仅对包装的文档/文字消息有效。
指定元素是否符合条件
ELEMENTQUALIFIED 参数( Web 服务的)控制 WSDL 架构中 elementFormDefault 属性的值。具体来说:
- 如果
ELEMENTQUALIFIED为1,则elementFormDefault为“qualified”。 - 如果
ELEMENTQUALIFIED为0,则elementFormDefault为“unqualified”。
此参数的默认值取决于 SoapBodyUse 类关键字的值。请参阅类定义参考。通常,SoapBodyUse 是“文字”,这意味着 ELEMENTQUALIFIED 为 1。
控制消息部分是否使用元素或类型
Web 服务有一个参数 (XMLELEMENT),用于控制 SOAP 消息的消息部分的精确格式。具体来说:
- 如果
XMLELEMENT为1,则<part>元素具有名为name和element的属性。在本例中,WSDL包含一个示例<message>元素,如下所示:
<message name="GetPersonSoapOut">
<part name="GetPersonResult" element="s0:Person" />
</message>
- 如果
XMLELEMENT为0,则<part>元素具有名为name和type的属性。在本例中,WSDL包含一个示例<message>元素,如下所示:
<message name="GetPersonSoapOut">
<part name="GetPersonResult" type="s0:Person" />
</message>
此参数的默认值取决于 SoapBodyUse 类关键字的值。请参阅类定义参考。通常,SoapBodyUse 是“literal”,这意味着 XMLELEMENT 为 1。