我正在尝试使用 Ksoap2 库从 Android 设备连接到 WCF .Net Web 服务。一切正常,到目前为止我已经能够发送和接收复杂的对象(经过大量的故障排除)。但是,我现在遇到了可空类型的问题。在服务器端,我要发送的许多属性都可以为空。当我尝试从 Android 端将这些作为 null 发送时,我收到一个反序列化错误,因为 ksoap 将 null=true 而不是 nil=true。这是来自测试驱动程序的一些工作 SOAP XML 以及来自 Android 客户端的当前 XML。
工作测试驱动程序 XML
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<AddNullables xmlns="http://TJIsGhey/Tester">
<NumbersToAdd xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Input1>7</Input1>
<Input2 i:nil="true" />
</NumbersToAdd>
</AddNullables>
</s:Body>
</s:Envelope>
Android 客户端 XML
<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema" xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" xmlns:v="http://schemas.xmlsoap.org/soap/envelope/">
<v:Header />
<v:Body>
<AddNullables xmlns="http://TJIsGhey/Tester" id="o0" c:root="1">
<NumbersToAdd i:type="n0:NullablesIn" xmlns:n0="http://TJIsGhey/Tester">
<Input1 i:type="d:int">6</Input1>
<Input2 i:null="true" />
</NumbersToAdd>
</AddNullables>
</v:Body>
</v:Envelope>
这是我收到的错误消息:
反序列化 Tester.NullablesIn 类型的对象时出错。值 '' 无法解析为类型 'Int32'。
任何帮助将不胜感激!