这是处理Android中SOAP响应的最佳方法

这是处理Android中SOAP响应的最佳方法,第1张

概述我正在使用KSoap2与服务器进行通信.沟通很好,并返回了我在下面提到的一组值.我不确定我处理回复的方式.我编写了一个单独的Java类,该类实现了KvmSerializable,用于将XML对象与Java对象映射.经过长时间的网络研究,我发现使用SAX,DOM等解析器更加标准和灵活.有什么办法可以使SAX解析

我正在使用KSoap2与服务器进行通信.沟通很好,并返回了我在下面提到的一组值.我不确定我处理回复的方式.我编写了一个单独的Java类,该类实现了KvmSerializable,用于将XML对象与Java对象映射.经过长时间的网络研究,我发现使用SAX,DOM等解析器更加标准和灵活.

有什么办法可以使SAX解析以下响应…如果是,请提供一些参考.

这是我从androID客户端应用向服务器发送请求后得到的响应.请注意,此响应不以.xml结束/作为.xml文件返回.

这是webclIEnt的响应:

http://134.1.10.5/Maxima/MaximaSystem.asmx/ValidateLogin

<DataSet><xs:schema ID="NewDataSet"><xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"><xs:complexType><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="table"><xs:complexType><xs:sequence><xs:element name="name" type="xs:string" minOccurs="0"/><xs:element name="UserIcode" type="xs:int" minOccurs="0"/><xs:element name="UserUsername" type="xs:string" minOccurs="0"/><xs:element name="UserPassword" type="xs:string" minOccurs="0"/><xs:element name="UserTypeICode" type="xs:int" minOccurs="0"/><xs:element name="Profiletable" type="xs:string" minOccurs="0"/><xs:element name="UserTypeDesc" type="xs:string" minOccurs="0"/></xs:sequence></xs:complexType></xs:element></xs:choice></xs:complexType></xs:element></xs:schema><diffgr:diffgram><NewDataSet><table diffgr:ID="table1" msdata:rowOrder="0"><name>Frecan </name><UserIcode>634</UserIcode><UserUsername>dairy</UserUsername><UserPassword>dairy123</UserPassword><UserTypeICode>632</UserTypeICode><Profiletable/><UserTypeDesc>Dentist</UserTypeDesc></table></NewDataSet></diffgr:diffgram></DataSet>

这就是回应.没有XML标签…任何内容…请建议我可以使用AndroID的原生解析器解析它的最佳方法.如果是这样,请提供一些参考.

这是我通过AndroID客户端Ping服务器时获得的响应的示例

 anyType{schema=anyType{element=anyType{complexType=anyType{choice=anyType{element=an yType{complexType=anyType{sequence=anyType{element=anyType{.... // some values ........ }; element=anyType{}; element=anyType{}; element=anyType{}; element=anyType{};     element=anyType{};  element=anyType{}; }; }; }; }; };unique=anyType{selector=anyType{}; fIEld=anyType{};}; }; }; diffgram=anyType{}; }

请让我知道,是否可以在AndroID中使用本机解析器.

提前致谢.

解决方法:

SoapObject result = (SoapObject)envelope.bodyIn;    if(result != null){        int count = result.getPropertyCount();        //TextVIEw t = (TextVIEw)this.findVIEwByID(R.ID.resultBox);        //t.setText("SOAP response:\n\n" + count);        SoapObject nameResult = (SoapObject) result.getProperty(0);        // TextVIEw t = (TextVIEw)this.findVIEwByID(R.ID.resultBox);        //t.setText("SOAP response:\n\n" + nameResult.toString());        SoapObject test = (SoapObject) nameResult.getProperty(1);        // TextVIEw t = (TextVIEw)this.findVIEwByID(R.ID.resultBox);        // t.setText("SOAP response:\n\n" + test.toString());        SoapObject dar = (SoapObject) test.getProperty(0);        //TextVIEw t = (TextVIEw)this.findVIEwByID(R.ID.resultBox);        //t.setText("SOAP response:\n\n" + dar.toString());        SoapObject suvas = (SoapObject) dar.getProperty(0);        int c = dar.getPropertyCount();        TextVIEw t = (TextVIEw)this.findVIEwByID(R.ID.resultBox);        t.setText("SOAP response:\n\n" + suvas.toString());        //t.setText("SOAP response:\n\n" + c);        //SoapObject nivas = (SoapObject) suvas.getProperty(NewsID);        //TextVIEw t = (TextVIEw)this.findVIEwByID(R.ID.resultBox);        // t.setText("SOAP response:\n\n" + nivas.toString());    }

首先,您必须在soapObject中获得一个soap响应,然后再计算total属性.

计数后,请一一检查您拥有数据的属性,
您还可以实现内部循环.

总结

以上是内存溢出为你收集整理的这是处理Android中SOAP响应的最佳方法全部内容,希望文章能够帮你解决这是处理Android中SOAP响应的最佳方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1084056.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存