我是Android和Java的新手(之前用C#进行开发),我非常绝望。我正在使用ksoap2联系.NET Web服务以获取xml数据。我的代码很简单,如果xml很小,它的效果很好:
soapEnvelope.setOutputSoapObject(request);
SoapPrimitive response = (SoapPrimitive) soapEnvelope.getResponse();
String xmlResponse = response.toString();
这是一种获取响应的简单方法,它是一个简单的xml字符串。但是当xml很大时,它会被截断,我想这是因为响应保存在内存中。我读了其他一些有这个问题的人,但我没有找到真正帮助我的解决方案;可能我错过了管理这个问题的必要知识,这可以通过在Eclipse上导航变量这一事实得到证实我发现数据完全存在,我只是不知道如何达到它...有人可以帮我吗?我怎样才能得到答案中缺失的部分?我需要在本地保存响应吗?需要循环一个InputStream吗?求助...
答案 0 :(得分:1)
在调试器窗口中,Eclipse不会显示所有数组元素。如果您在扩展阵列时能够看到它们,那么它们就可供您的程序使用。
如果你怀疑是大响应,SAX是解析它的正确方法
编辑:
正如Manfred解释in this answer,response.toString()
是一个坏主意,因为KSoap已经完成了解析。
答案 1 :(得分:1)
您应该使用信封的getResponse方法并解析SoapObject树以满足您的需要。使用bodyIn并使用SAX解析它会添加第二个解析..如果你这样做,你也可以不使用ksoap2。