gpt4 book ai didi

android - 有没有更好的方法在 Android 中解析 SoapObject

转载 作者:行者123 更新时间:2023-11-29 21:57:20 25 4
gpt4 key购买 nike

到目前为止,我已经设法连接到 Web 服务并获得我的 SoapObject 响应,但我在缩小良好、干净的解析方式范围时遇到了问题。搜索 Internet 并没有真正产生太多结果,每个人都有不同的方式和不同的过程,通常针对他们自己的 Web 服务,使其成为一次性使用类型的解决方案。基本上,下面是我从 Web 服务获得的响应

anyType{
schema=anyType{
element=anyType{
complexType=anyType{
choice=anyType{
element=anyType{
complexType=anyType{
sequence=anyType{
element=anyType{};
element=anyType{};
element=anyType{};
element=anyType{}; }; }; }; }; }; }; };
diffgram=anyType{
NewDataSet=anyType{
Rep_x0020_Information=anyType{
Login=CorrectLogin; Password=InCorrectPass; }; }; }; }

基本上我希望能够解析出两个重要字段(登录名和密码)。从我读到的内容来看,我只是尝试根据属性计数遍历 SoapObject 响应,但这似乎不起作用。当我尝试时,我得到的响应属性计数为 2,所以我最终做了如下这样的事情:

SoapObject response=(SoapObject) envelope.getResponse();

if (response != null) {
Log.i("Message", "the response contains: " + response.toString());
SoapObject diffgram = (SoapObject) response.getProperty("diffgram");
SoapObject NewDataSet = (SoapObject) diffgram.getProperty("NewDataSet");
SoapObject RepInfo = (SoapObject) NewDataSet.getProperty("Rep_x0020_Information");
for (int i = 0; i < RepInfo.getPropertyCount(); i++) {
PropertyInfo info = new PropertyInfo();
RepInfo.getPropertyInfo(i, info);
Log.d("Info", info.name + " : " + RepInfo.getProperty(i).toString());
}


//which gives the following message in LogCat
D/Info(716): Login : InCorrectLogin
D/Info(716): Password : InCorrectPass

这个过程有效,因为在最后一个循环中我得到了我想要的两个对象,但我只是觉得有一种更简洁的方法可以做到这一点。我之所以这么问,是因为随着我深入了解这个应用程序,将会进行一些更复杂的 Web 服务调用,我希望能够在整个应用程序中拥有可重用的东西,而不是为每个请求构建几个 SoapObjects 只是为了获得一直到我想要的对象。

最佳答案

有两种方法可以从网络服务中解析对象:
首先,假设您是网络服务所有者或创建者,您可以让网络服务返回一个 Json 字符串,然后从客户端,您可以创建一个到 Json 的实体映射,Json 库将负责解析你。

其次:web服务通常会响应很多复杂的对象,所以你可以让实体与这些对象进行映射。
可以关注this tutorial了解如何映射一个简单的对象,然后转到我的答案 this question了解解析复杂对象。
就是这样:

 HttpTransportSE androidHttpTransport = new HttpTransportSE(SERVER_URL);
androidHttpTransport.call(SOAP_ACTION, envelope);// call
Entity entity = (Entity)envelope.bodyIn;

关于android - 有没有更好的方法在 Android 中解析 SoapObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12915327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com