Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android kSOAP2双ID异常_Android_Exception_Ksoap2_Android Ksoap2_Ksoap - Fatal编程技术网

Android kSOAP2双ID异常

Android kSOAP2双ID异常,android,exception,ksoap2,android-ksoap2,ksoap,Android,Exception,Ksoap2,Android Ksoap2,Ksoap,我正试图在我的android应用程序中使用KSOAP2,当我试图执行一个特定的webservice请求时,我最终抛出了一个“双ID”异常。我能够在kSOAP源代码中找到抛出该异常的位置,它位于SoapSerializationEnvelope类方法public Object read()下面是该代码的摘录,显示了抛出的异常: if (id != null) { Object hlp = idMap.get(id); if (hlp

我正试图在我的android应用程序中使用KSOAP2,当我试图执行一个特定的webservice请求时,我最终抛出了一个“双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-webservice连接方法,同样的请求没有任何问题

新资料:


仔细检查后,问题似乎是由包含
元素的xml响应引起的,该元素具有与上面相同ID的表。我认为这就是问题的原因,到目前为止我执行的其他请求中没有该元素,也没有异常。因此,要补充一个问题:我可以阻止Web服务在其响应中发送此块,还是让kSOAP忽略它?

我可以通过删除Web服务发送的
diffgr:before
元素来解决此问题。多亏了

我才能够通过删除Web服务发送的
diffgr:before
元素来解决这个问题。多亏了

我也遇到了同样的问题,但是在xml响应中我没有之前的diffgr:prefore(我根本无法更改Web服务)。无论如何,问题是由于响应中的一些空值造成的。使用
我成功地去除了所有的空白元素,它的效果非常好。这是通过将响应转换为字符串来完成的,将其加载到
nu.xom.Document
元素中,从文档中删除空元素,并将其还原为InputStream,以便使用ksoap2进行解析嗯,我也遇到了同样的问题,但在xml响应中没有
diffgr:before
(而且我根本无法更改Web服务). 无论如何,问题是由于响应中的一些空值造成的。使用 我成功地去除了所有的空白元素,它的效果非常好。这是通过将响应转换为字符串,将其加载到
nu.xom.Document
元素中,从文档中删除空元素,并将其还原为InputStream,以便使用ksoap2进行解析来完成的