解析Android中使用kso​​ap2 SOAP响应? [英] Parsing soap response in android using ksoap2?

查看:213
本文介绍了解析Android中使用kso​​ap2 SOAP响应?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在connecnting到网上互联网服务和我能够得到响应。我需要使用kso​​ap2解析此响应。我试着用SAX解析器,我能够解析it.please帮助我如何使用kso​​ap2解析XML

这是我的回应XML

 <字符串的xmlns =htt​​p://www.webserviceX.NET/>
< StockQuotes>
<股票及GT;
<符号与GT; M< /符号与GT;
<最后>及39.86 LT; /尾>
<日期和GT 11 /二千零十二分之二十六< /日期和GT;
&所述;时间&gt; 4:02 pm< /时间&gt;
&lt;改变&GT;&-1.87 LT; /变化与GT;
&LT;开和GT;&41.00 LT; /打开&GT;
&LT;高&GT;及41.09 LT; /高&GT;
&LT;低&GT;及39.65 LT; /低&GT;
&LT;音量和GT; 7968614&LT; /音量&GT;
&LT;&市值GT; 15.765B&LT; /&市值GT;
&LT; previousClose&GT;及41.73 LT; / previousClose&GT;
&LT; PercentageChange&GT; -4.48%LT; / PercentageChange&GT;
&LT; AnnRange&GT; 30.38 - 42.17&LT; / AnnRange&GT;
&LT;荣获&GT;&3.227 LT; /荣获&GT;
&LT; P-E&GT;及12.93 LT; / P-E&GT;
&LT;名称&gt;梅西公司通用和LT; /名称&gt;
&LT; /股票及GT;
&LT; / StockQuotes&GT;
&LT; /串&GT;


解决方案

我粘贴我使用的解析来自Ksoap2结果样本code
耗时.NET Web服务。我希望它帮助。

与数据类型这样创建一个类:

 进口org.ksoap2.serialization.KvmSerializable;
进口org.ksoap2.serialization.PropertyInfo;公共类Provincias实现KvmSerializable {    公众诠释GCPRV;
    公共字符串GDPRV;
    公众诠释GFCTB;    公共Provincias(){}
    公共Provincias(INT gcprv,字符串gdprv,INT gfctb)
    {
        this.GCPRV = gcprv;
        this.GDPRV = gdprv;
        this.GFCTB = gfctb;
    }    @覆盖
    公共对象的getProperty(INT为arg0){
          开关(为arg0)
            {
            情况下0:
                返回GCPRV;
            情况1:
                返回GDPRV;
            案例2:
                返回GFCTB;
            }            返回null;
    }    @覆盖
    公众诠释getPropertyCount(){
        返回3;
    }    @覆盖
    公共无效为getPropertyInfo(INT指数,Hashtable的ARG1,信息的PropertyInfo){
          开关(指数)
            {
            情况下0:
                info.type = PropertyInfo.INTEGER_CLASS;
                info.name =GCPRV;
                打破;
            情况1:
                info.type = PropertyInfo.STRING_CLASS;
                info.name =GDPRV;
                打破;
            案例2:
                info.type = PropertyInfo.INTEGER_CLASS;
                info.name =GFCTB;
                打破;
            默认:打破;
            }    }

一旦你有你SoapObject响应,你只需要查询它的propertis
并将其绑定到你的类是这样的:

  Provincias [] =省新Provincias [ObjetoSoap.getPropertyCount()];
                的for(int i = 0; I&LT; prov.length;我++){
                    SoapObject PII =(SoapObject)ObjetoSoap.getProperty(I)
                    Provincias省报=新Provincias();
                    provincia.GCPRV =的Integer.parseInt(pii.getProperty(0)的ToString());
                    provincia.GDPRV = pii.getProperty(1)的ToString();
                    provincia.GFCTB =的Integer.parseInt(pii.getProperty(2)的ToString());
                    省[I] =省报;
           }

编辑:在这里,你有方法说明:

  HTTP / 1.1 200 OK
内容类型:文本/ xml的;字符集= UTF-8
内容长度:长度&LT; XML版本=1.0编码=UTF-8&GT?;
&LT;肥皂:信封的xmlns:XSI =htt​​p://www.w3.org/2001/XMLSchema-instance的xmlns:XSD =htt​​p://www.w3.org/2001/XMLSchema中的xmlns:SOAP = http://schemas.xmlsoap.org/soap/envelope/\">
  &LT;肥皂:身体与GT;
    &LT; Cargar_Provincias_JavaResponse的xmlns =htt​​p://tempuri.org/&GT;
      &LT; Cargar_Provincias_JavaResult&GT;
        &LT; Provincias_Class&GT;
          &LT; GCPRV&GT;&LT INT; / GCPRV&GT;
          &LT; GDPRV&GT;串LT; / GDPRV&GT;
          &LT; GFCTB&GT;&LT INT; / GFCTB&GT;
        &LT; / Provincias_Class&GT;
        &LT; Provincias_Class&GT;
          &LT; GCPRV&GT;&LT INT; / GCPRV&GT;
          &LT; GDPRV&GT;串LT; / GDPRV&GT;
          &LT; GFCTB&GT;&LT INT; / GFCTB&GT;
        &LT; / Provincias_Class&GT;
      &LT; / Cargar_Provincias_JavaResult&GT;
    &LT; / Cargar_Provincias_JavaResponse&GT;
  &LT; / SOAP:身体与GT;
&LT; / SOAP:信封&GT;

i am connecnting to a online webservice and am able to get the response. i need to parse this response using the ksoap2. i tried with SAX parser and i am able to parse it.please help me on how to parse the xml using ksoap2

this is my response xml

<string xmlns="http://www.webserviceX.NET/">
<StockQuotes>
<Stock>
<Symbol>M</Symbol>
<Last>39.86</Last>
<Date>11/26/2012</Date>
<Time>4:02pm</Time>
<Change>-1.87</Change>
<Open>41.00</Open>
<High>41.09</High>
<Low>39.65</Low>
<Volume>7968614</Volume>
<MktCap>15.765B</MktCap>
<PreviousClose>41.73</PreviousClose>
<PercentageChange>-4.48%</PercentageChange>
<AnnRange>30.38 - 42.17</AnnRange>
<Earns>3.227</Earns>
<P-E>12.93</P-E>
<Name>Macy's Inc Common</Name>
</Stock>
</StockQuotes>
</string>

解决方案

I paste you a sample code I am using to parse results from Ksoap2 consuming .NET webservices. I hope it help.

Create a class with the data types like this:

import org.ksoap2.serialization.KvmSerializable;
import org.ksoap2.serialization.PropertyInfo;

public class Provincias implements KvmSerializable {

    public int GCPRV;
    public String GDPRV;
    public int GFCTB;

    public Provincias(){}
    public Provincias(int gcprv, String gdprv, int gfctb)
    {
        this.GCPRV=gcprv;
        this.GDPRV=gdprv;
        this.GFCTB=gfctb;       
    }

    @Override
    public Object getProperty(int arg0) {
          switch(arg0)
            {
            case 0:
                return GCPRV;
            case 1:
                return GDPRV;
            case 2:
                return GFCTB;
            }

            return null;
    }

    @Override
    public int getPropertyCount() { 
        return 3;
    }

    @Override
    public void getPropertyInfo(int index, Hashtable arg1, PropertyInfo info) {
          switch(index)
            {
            case 0:
                info.type = PropertyInfo.INTEGER_CLASS;
                info.name = "GCPRV";
                break;
            case 1:
                info.type = PropertyInfo.STRING_CLASS;
                info.name = "GDPRV";
                break;
            case 2:
                info.type = PropertyInfo.INTEGER_CLASS;
                info.name = "GFCTB";
                break;
            default:break;
            }

    }

Once you have your SoapObject response, you just need to query it's propertis and bind them to your class like this:

   Provincias[] prov = new Provincias[ObjetoSoap.getPropertyCount()];
                for (int i = 0; i < prov.length; i++) {
                    SoapObject pii = (SoapObject)ObjetoSoap.getProperty(i);
                    Provincias provincia = new Provincias();      
                    provincia.GCPRV=Integer.parseInt(pii.getProperty(0).toString());
                    provincia.GDPRV =pii.getProperty(1).toString();
                    provincia.GFCTB=Integer.parseInt(pii.getProperty(2).toString());                
                    prov[i] = provincia;
           }

EDIT: Here you have the method description:

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <Cargar_Provincias_JavaResponse xmlns="http://tempuri.org/">
      <Cargar_Provincias_JavaResult>
        <Provincias_Class>
          <GCPRV>int</GCPRV>
          <GDPRV>string</GDPRV>
          <GFCTB>int</GFCTB>
        </Provincias_Class>
        <Provincias_Class>
          <GCPRV>int</GCPRV>
          <GDPRV>string</GDPRV>
          <GFCTB>int</GFCTB>
        </Provincias_Class>
      </Cargar_Provincias_JavaResult>
    </Cargar_Provincias_JavaResponse>
  </soap:Body>
</soap:Envelope>

这篇关于解析Android中使用kso​​ap2 SOAP响应?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆