我的应用程序需要查询第三方SOAP服务 使用SOAP UI时,它会为其中一个方法生成此示例请求:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:wsedi">
<soapenv:Header/>
<soapenv:Body>
<urn:listMBAllExXML>
<!--Optional:-->
<name>?</name>
<!--Optional:-->
<password>?</password>
<!--Optional:-->
<receiveBinary>?</receiveBinary>
<!--Optional:-->
<lastDate>?</lastDate>
<!--Optional:-->
<uuid>?</uuid>
<!--Optional:-->
<direction>?</direction>
<!--Optional:-->
<status>?</status>
</urn:listMBAllExXML>
</soapenv:Body>
</soapenv:Envelope>
lastDate
被评为可选,服务开发人员的API文档证实了这一点。
但是,当我使用&#34;添加服务参考...&#34;解决方案资源管理器中的菜单,我得到了这个生成的包装器:
listMBAllExModel listMBAllExXML(string name, string password, bool receiveBinary, System.DateTime lastDate, string uuid, string direction)
{
// some code...
}
如您所见,lastDate
的类型为DateTime
,而非DateTime?
。因此,我无法忽略它。
这是WSDL的问题吗? 是否有任何变通方法(手工编写服务包装器不是一个很好的选择)?
更新。
这是XSD的一部分,包含在服务参考文件夹中:
<xs:complexType name="listMBAllExXML">
<xs:sequence>
<xs:element minOccurs="0" name="name" type="xs:string" />
<xs:element minOccurs="0" name="password" type="xs:string" />
<xs:element minOccurs="0" name="receiveBinary" type="xs:boolean" />
<xs:element minOccurs="0" name="lastDate" type="xs:dateTime" />
<xs:element minOccurs="0" name="uuid" type="xs:string" />
<xs:element minOccurs="0" name="direction" type="xs:string" />
</xs:sequence>
</xs:complexType>
lastDate
没有nillable="true"
。