Как я могу пометить заголовок SOAP как необязательный в WSDL?
У меня есть 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
В соответствии с "Дизайн и ведение контентов веб-сервисов" Томас Эрл и др. (ISBN-13: 978-0-13-613517-3) Глава 15.4 "Определение блоков SOAP в WSDL:
Спецификация WSDL 1.1 неясно, будут ли заголовки SOAP описанные в документе WSDL, должны быть включены потребителями или нет. Основной профиль WS-I сделал обязательным для потребителей их включение, но WDL 2.0 обеспечивает выбор в отношении того, должны ли потребители вынужден включать их или нет. Страница 472.
В WSDL 2.0 вы можете установить атрибут wsdl: required = "false" в пользовательском блоке заголовка SOAP, чтобы указать, должны ли пользователи включать этот блок заголовка.