Как я могу пометить заголовок 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, чтобы указать, должны ли пользователи включать этот блок заголовка.