我正在调用.Net Web服务,它将复杂类型作为参数(使用KSoap2)。我在成功之前就完成了这个,所以我决定只复制我的旧代码并将其粘贴到一个新方法中,当然用一些与当前Web服务相关的代码替换一些代码。
我能看到的唯一真正的区别是新网站服务的.asmx的网址不同。
问题是我一直收到以下错误:
(我在SoapEnvelope.VER11时得到以下内容)
org.xmlpull.v1.XmlPullParserException: expected: END_TAG {http://schemas.xmlsoap.org/soap/envelope/}Body (position:END_TAG </{http://schemas.xmlsoap.org/soap/envelope/}soap:Fault>@1:338 in java.io.InputStreamReader@199cb474)
(以及SoapEnvelope.VER12时的以下内容)
org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://www.w3.org/2001/12/soap-envelope}Envelope (position:START_TAG <{http://schemas.xmlsoap.org/soap/envelope/}soap:Envelope>@1:207 in java.io.InputStreamReader@5b209e72
为什么错误消息会发生这样的变化,具体取决于我使用的SOAP版本?
我也尝试用HttpTransport.requestDump打印出我的信封,我得到以下内容:
xmlns:v="http://schemas.xmlsoap.org/soap/envelope/">
<v:Header />
<v:Body>
<postMessage xmlns="http://www.magnatech.com/" id="o0" c:root="1">
<myMessage i:type="n0:Message" xmlns:n0="http://www.magnatech.com/">
<messageContent i:type="d:string">HEY</messageContent>
<userName i:type="d:string">TEST USERNAME</userName>
<agentName i:type="d:string">TEST AGENT NAME</agentName>
<userID i:type="d:string">0</userID>
<agentID i:type="d:string">0</agentID>
<fromAgent i:type="d:string">false</fromAgent>
<messageID i:type="d:string"></messageID>
<accountNumber i:type="d:string">TEST ACCOUNT</accountNumber>
</myMessage>
</postMessage>
</v:Body>
看起来很好,我实际上用其他“WORKING”Web服务调用的信封做了同样的事情,它们是相同的,当然除了元素名称。
最后,这是HttpTransport.responseDump的输出:
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:Client</faultcode><faultstring>Could not deserialize Soap message</faultstring></soap:Fault></soap:Body></soap:Envelope>
因此,当我发送信封时,信封显然有问题,但我发现它并没有错。
可能是什么问题?我已经尽了一切可能,但我的想法已经不多了。
任何帮助都将不胜感激。
由于