kSOAP2双ID异常

| 我试图在我的android应用程序中使用kSOAP 2,并且当我尝试执行特定的Web服务请求时,最终导致抛出“双重ID”异常。我能够找到它在kSOAP源代码中的位置,它是在
SoapSerializationEnvelope
类方法
public Object read()
中的。这是该代码的摘录,显示了所抛出的异常:
        if (id != null) {
            Object hlp = idMap.get(id);
            if (hlp instanceof FwdRef) {
                FwdRef f = (FwdRef) hlp;
                do {
                    if (f.obj instanceof KvmSerializable)
                        ((KvmSerializable) f.obj).setProperty(f.index, obj);
                    else
                        ((Vector) f.obj).setElementAt(obj, f.index);
                    f = f.next;
                } while (f != null);
            } else if (hlp != null)
                throw new RuntimeException(\"double ID\");
            idMap.put(id, obj);
        }
我完全不确定此异常是什么或如何解决此异常。有人知道处理该异常是什么吗? 谢谢 编辑: 应该注意的是,我还在此应用程序的iOS版本中使用SOAP Web服务连接方法,并且相同的确切请求没有任何问题。 新的消息: 经过仔细检查,问题似乎是由xml响应引起的,我正在包含一个
<diffgr:before>
元素,该元素具有与上述ID相同的表。我认为这是问题的原因,到目前为止,我执行的其他请求中没有该元素,也没有例外。因此,增加一个问题:我可以阻止Web服务在其响应中发送此块,还是让kSOAP忽略它?     
已邀请:
通过删除Web服务正在发送的
diffgr:before
元素,我能够解决此问题。我这样做是由于这篇文章     
好吧,我也遇到了同样的问题,但是xml响应中没有4(而且我根本无法更改Web服务)。无论如何,问题出在响应中一些空值。使用XOM 我设法删除了所有空元素,它的作用就像魅力一样。这是通过将响应转换为字符串,将其加载到“ 6”元素,从文档中删除空元素并将其还原回InputStream以便使用kso​​ap2进行解析来完成的。     

要回复问题请先登录注册