第六十章 生成的 WSDL 的详细信息 - 二进制 SOAP 格式的 WSDL 差异
二进制 SOAP 格式的 WSDL 差异
对于 SOAPBINARY 参数指定为 1 的 Web 服务,WSDL 增强如下:
<binding>元素包含一个扩展子元素,指示SOAP二进制支持:
<isc:binding charset="isc_charset">
其中 isc_charset 是 Web 服务的 IRIS 命名空间的 IRIS 字符集(例如:Unicode、Latin1)。
例如:
<isc:binding charset="Unicode">
- 在
WSDL的<types>部分中,每个<complexType>元素都包含一个扩展属性,如下所示:
<complexType isc:classname="service_name:class_name" ...>
其中 service_name 是 Web 服务名称,class_name 是与此复杂类型相对应的 IRIS 类名。例如:
<s:complexType isc:classname="AddComplex:GSOAP.ComplexNumber" name="ComplexNumber">
<s:sequence>
<s:element minOccurs="0" name="Real" type="s:double"/>
<s:element minOccurs="0" name="Imaginary" type="s:double"/>
</s:sequence>
</s:complexType>
- 此外,在
<types>部分中,<element>和<simpleContent>元素包含以下形式的扩展属性(根据需要):
<element isc:property="property_name" ....>
<simpleContent isc:property="property_name" ....>
其中 property_name 是映射到该元素的 IRIS 属性的名称。(请注意,WSDL 包含一个 <simpleContent> 元素,用于 XMLPROJECTION 等于“content”的属性。)
例如:
<s:element minOccurs="0" name="RealType" isc:property="Real" type="s:double"/>
仅当属性使用 XMLNAME 属性参数时才设置此属性,该参数允许 XML 名称与属性名称不同。上述示例取自 Web 服务的 WSDL,该服务使用包含以下属性的类:
Property Real As %Double (XMLNAME = "RealType");
isc:property 属性允许生成的客户端类中的属性名称与服务类中的属性名称相同。当前例外情况是任何 choice 或 replacementGroup 用法或包装元素,其中类型类具有 XMLNAME 参数。
- 命名空间声明包括以下附加项目:
xmlns:isc="https://www.intersystems.com/soap/"
这些 WSDL 扩展根据 XML Schema、WSDL 和 WS-I Basic Profile 规范有效,并且预计会被所有符合要求的 Web 客户端工具包忽略。
注意:如果 Web 服务或 Web 客户端使用 二进制 SOAP 格式,则您无法将 WS-Security 或 WS-Policy 功能与此 Web 服务或客户端一起使用。请参阅保护 Web 服务。
单向 Web 方法的 WSDL 差异
如果方法的返回类型定义为 %SOAP.OneWay,则 WSDL 与默认值在以下方面有所不同:
- 在
<binding>元素中,该方法的<operation>元素不包括<output>元素。 - 在
<portType>元素中,该方法的<operation>元素不包括<output>元素。 WSDL不包括用于响应消息的<message>元素。