第六十章 生成的 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>
元素。
网友评论