如何在WSDL中将SOAP标头标记为可选?

Tal*_*adi 16 tibco soap wsdl web-services

我有一个带可选标头的wsdl:

<s:element name="AuthIdentifier" type="tns:AuthIdentifier"/>
<s:complexType name="AuthIdentifier">
  <s:sequence>
    <s:element minOccurs="0" maxOccurs="1" name="identifier" type="s:string"/>
  </s:sequence>
  <s:anyAttribute/>
</s:complexType>
Run Code Online (Sandbox Code Playgroud)

客户端使用集成软件 (tibco)连接到我的服务并声称标头是必需的,因此他必须使用空值发送它:

<Header.AuthIdentifier>
   <ns0:AuthIdentifier xmlns:ns0 = "http://www.tal.com/schemas"/>
</Header.AuthIdentifier>
Run Code Online (Sandbox Code Playgroud)

如何使其成为可选项?这样他就不必发送整个标题了?有没有这样的minOccurs东西?或者它现在已经是可选的吗?

Dan*_*ars 4

根据 Thomas Erl 等人的《Web 服务契约设计和版本控制》(ISBN-13: 978-0-13-613517-3) 第 15.4 章,在 WSDL 中定义 SOAP 块:

WSDL 1.1 规范对于 WSDL 文档中描述的 SOAP 标头是否必须由消费者包含尚不清楚。WS-I 基本配置文件强制消费者包含它们,但 WDL 2.0 提供了是否应强制消费者包含它们的选择。第 472 页。

在 WSDL 2.0 中,您可以在自定义 SOAP 标头块中设置属性 wsdl:required="false" 以指示使用者是否必须包含此标头块。