Подтвердить что ты не робот

Необязательные части сообщения в WSDL

В моем сообщении wsdl: я получил два параметра: имя и фамилию:

<message name="setName">
  <part name="firstname" type="xsd:string"></part>
  <part name="lastname" type="xsd:string"></part>
</message> 

Я хочу определить часть "firstname" по мере необходимости, а часть "lastname" - как необязательная. Как это сделать?

4b9b3361

Ответ 1

В WSDL части не могут быть необязательными. Они всегда требуются. Если вам нужны дополнительные детали, вам нужно будет создать одну часть, которая ссылается на XSD complexType, который затем может иметь необязательные элементы.

Ответ 2

Вы можете добавить значение nullable в lastname, поэтому требуется имя:

<message name="setName">
    <part name="firstname" type="xsd:string"></part>
    <part name="lastname" xsi:nil="true" type="xsd:string"></part>
</message> 

Если вы это сделаете, ваше тело мыла будет выглядеть так (пустое или заполненное имя):

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:user="http://www.example.com/MyService/">
   <soapenv:Header/>
   <soapenv:Body>
      <user:setName>
         <firstname>John</firstname>
         <lastname></lastname>
      </user:setName>
   </soapenv:Body>
</soapenv:Envelope>

Или даже без последнего имени:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:user="http://www.example.com/MyService/">
   <soapenv:Header/>
   <soapenv:Body>
      <user:setName>
         <firstname>John</firstname>
      </user:setName>
   </soapenv:Body>
</soapenv:Envelope>