android – 如何在ksoap2中将String转换为SoapObject?
作者:互联网
在我的Android应用程序中,我使用ksoap2与服务器进行通信.我通过soap请求下载某个复杂的体育信息结构,稍后在我的程序中解析它.
我想要做的是以某种方式“保存”这个复杂的结构,以便稍后当该结构中的所有信息都是最终的并且不再更改时我可以再次解析它,这样我就可以显示它而无需再次调用Web服务.
我到目前为止,我可以使用SoapObject类中的toString()方法将整个结构转换为字符串,以便我可以将其保存在应用程序的共享首选项中.
但是:要使用我直接从Web服务器下载数据时使用的解析器来解析字符串,我需要它作为SoapObject.我试过这样的事情:
SoapObject soapObj = (SoapObject) dataAsStringFromSharedPrefs;
但我不能以这种方式将字符串转换为SoapObject.
解决方法:
可以说,someObject是一个具有成员CategoryId,Name,Description的对象.如果要在响应中获取这些对象成员,可以通过执行以下操作将它们保存到someObject:
SoapObject response = (SoapObject)envelope.getResponse();
someObject.CategoryId = Integer.parseInt(response.getProperty(0).toString());
someObject.Name = response.getProperty(1).toString();
someObject.Description = response.getProperty(2).toString();
编辑:
好的,我现在看到了问题.
要获得一个soapobject,我能想到的唯一方法是:
1)解析存储的字符串
2)将所有数据字段存储在局部变量中
Parse stored string:
start loop
int x = something
string y = something
double z = something
end loop
3)使用变量创建一个新对象
someObject.fieldx = x
someObject.fieldy = y
someObject.fieldz = z
4)创建一个新的soapobject
SoapObject sp_Object = new SoapObject(NAMESPACE, METHOD_NAME);
5)使用步骤3中的对象创建propertyinfo
PropertyInfo prop = new PropertyInfo();
prop.setNamespace(NAMESPACE);
prop.setType(someObject.getClass());
prop.setValue(someObject);
6)在步骤4中将propertyinfo添加到soapobject
sp_Object.addProperty(prop);
然后,您可以将soapobject sp_Object用于解析器.
标签:ksoap2,android,string,casting,soap 来源: https://codeday.me/bug/20191007/1867782.html