web services - ejemplos - ¿Cómo puedo marcar un encabezado SOAP como opcional en WSDL?
web service wsdl ejemplo (1)
Tengo un wsdl con un encabezado opcional:
<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>
El cliente está utilizando un software de integración (tibco)
para conectarse a mi servicio y afirma que el encabezado es necesario, por lo que debe enviarlo con un valor vacío:
<Header.AuthIdentifier>
<ns0:AuthIdentifier xmlns:ns0 = "http://www.tal.com/schemas"/>
</Header.AuthIdentifier>
¿Cómo lo hago opcional? ¿Para que no tenga que enviar todo el encabezado? ¿Hay un minOccurs
o algo así? ¿O ya es opcional como es ahora?
De acuerdo con el "Diseño y control de versiones del contrato de servicio web" Thomas Erl et al (ISBN-13: 978-0-13-613517-3) Capítulo 15.4, Definición de bloques SOAP en WSDL:
La especificación WSDL 1.1 no tiene claro si los encabezados SOAP descritos en un documento WSDL deben ser incluidos o no por los consumidores. El Perfil Básico WS-I hizo obligatorio que los consumidores los incluyeran, pero WDL 2.0 ofrece la opción de obligar a los consumidores a incluirlos o no. Página 472.
En WSDL 2.0 puede configurar el atributo wsdl: required = "false" en el bloque de encabezado SOAP personalizado para indicar si los consumidores deben incluir este bloque de encabezado.