在我的wsdl:消息中,我有两个参数,firstname和lastname:
<message name="setName">
<part name="firstname" type="xsd:string"></part>
<part name="lastname" type="xsd:string"></part>
</message>
Run Code Online (Sandbox Code Playgroud)
我想根据需要定义"firstname"部分,并将"lastname"部分定义为可选.我怎么做?
小智 18
在WSDL中,部件不能是可选的.他们总是需要的.如果需要可选部件,则必须创建一个引用XSD complexType的部件,然后该部件可以包含可选元素.
您可以将nullable添加到lastname,因此firstname是必需的:
<message name="setName">
<part name="firstname" type="xsd:string"></part>
<part name="lastname" xsi:nil="true" type="xsd:string"></part>
</message>
Run Code Online (Sandbox Code Playgroud)
如果你这样做,你的肥皂体就像这样(空或填充姓氏):
<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>
Run Code Online (Sandbox Code Playgroud)
甚至没有姓氏:
<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>
Run Code Online (Sandbox Code Playgroud)