通过 ksoap2 来自 Web 服务的部分 xml 响应

发布于 2024-12-06 18:02:16 字数 527 浏览 0 评论 0原文

我对 Android 和 Java 都是新手(以前用 C# 开发过),对此我非常绝望。我正在使用 ksoap2 联系 .NET Web 服务来获取 xml 数据。我的代码很简单,如果 xml 很小,它也能很好地工作:

soapEnvelope.setOutputSoapObject(request);
SoapPrimitive response = (SoapPrimitive) soapEnvelope.getResponse();
String xmlResponse = response.toString();

这是获取响应的简单方法,响应是一个简单的 xml 字符串。但是当 xml 很大时,它会被截断,我想这是因为响应保存在内存中。我读到其他人也遇到这个问题,但我没有找到真正帮助我的解决方案;可能我错过了管理问题所需的知识,这一点可以通过在 Eclipse 上导航变量的事实得到证实,我发现数据完全在那里,我只是不知道如何访问它......有人可以帮助我吗? ?我怎样才能得到响应中缺失的部分?我需要将响应保存在本地吗?需要循环输入流吗?帮忙,请...

I'm new in both Android and Java (use to develop in C# before) and I'm quite desperate on this. I'm using ksoap2 to contact a .NET Web Service to get xml data. My code is simple and it works well if the xml is small:

soapEnvelope.setOutputSoapObject(request);
SoapPrimitive response = (SoapPrimitive) soapEnvelope.getResponse();
String xmlResponse = response.toString();

this is a simple way to get the response, which is a simple xml string. But when the xml is large, it gets truncate, and I suppose it is because the response is kept in memory. I read some other people having this problem, but I didn't find a solution that really helps me; probably I miss the necessary knowledge to manage the question, and this is confirmed by the fact that navigating the variables on Eclipse I found that the data is fully there, I only did't know how to reach it... can somebody help me? how can i get the missing part of the response? I need to save the response locally? Need to cycle an InputStream? help, please...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

放赐 2024-12-13 18:02:16

在调试器窗口中,Eclipse 将不会显示所有数组元素。如果您在扩展数组时能够看到它们,那么它们就可供您的程序使用。

如果您怀疑响应较大,SAX 是解析它的正确方法

编辑:
正如 Manfred 在此答案中所解释的那样,< code>response.toString() 是一个坏主意,因为 KSoap 已经完成了解析。

In debugger windows Eclipse will not show all the array elements. If you are able to see them all when you expand the array then they are all there for your program to use.

If you are suspecting large response, SAX is the right way to parse it

EDIT:
As Manfred explains in this answer, response.toString() is a bad idea because KSoap has already done the parsing.

洒一地阳光 2024-12-13 18:02:16

您应该使用信封的 getResponse 方法并解析 SoapObject 树以获得所需的任何内容。使用 bodyIn 并使用 SAX 解析它会增加第二次解析..如果你这样做,你最好不要使用 ksoap2。

You should use the getResponse method of the envelope and parse the SoapObject tree for whatever you need. Using bodyIn and parsing that with SAX adds a second parsing.. if you do that you might as well not use ksoap2.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文