2016-01-21 115 views
16

我有一个WSDL有一个可选的头:如何在WSDL中将SOAP Header标记为可选项?

<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或类似的东西?或者它现在已经是可选的了?

+0

我与Tibco有同样的问题。你修好了吗? –

+2

这是一个定义头部结构的代码片段吗?如果是,请尝试'' –

回答

3

据 “Web服务合约设计&版本” 托马斯·尔等人(ISBN-13:978-0-13-613517-3)第15.4,SOAP定义中的块WSDL:

的WSDL 1.1关于在WSDL文档中描述的SOAP头文件 是否必须被消费者包含,规范尚不清楚。 WS-I Basic Profile强制要求消费者包含它们, ,但WDL 2.0提供了关于消费者是否应该被迫包含它们的选项 。页面472.

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