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

时间:2016-01-21 10:07:57

标签: web-services soap wsdl tibco

我有一个带有可选标头的 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>

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

<Header.AuthIdentifier>
   <ns0:AuthIdentifier xmlns:ns0 = "http://www.tal.com/schemas"/>
</Header.AuthIdentifier>

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

1 个答案:

答案 0 :(得分:3)

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

  

WSDL 1.1规范不清楚是否有SOAP头   WSDL文档中描述的内容必须包含在消费者中或不包括在内。该   WS-I Basic Profile强制要求消费者包含它们,   但WDL 2.0提供了消费者是否应该选择的选择   被迫包括或不包括他们。第472页。

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