Search code examples
androidksoap

How to parse array of string in KSOAP , android


SOAP Response

<?xml version="1.0" encoding="UTF-8"?>
 <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
    <ns2:getItemTypesResponse xmlns:ns2="http://Product/">
        <return>Laptop</return>
        <return>Netbook</return>
    </ns2:getItemTypesResponse>
</S:Body>

How do I parse this SOAP response in android?

Here's my code.

for(int i =0 ; i<count;i++){
            //SoapObject inner= (SoapObject)outer.getProperty(i);
            String s = null;
            s = outer.getProperty(i).toString();
            result.add(s);
        }

Solution

  • Create a class which implements the KvmSerializeable:

    public class Import implements KvmSerializable {
    
    String test;
    
    public Import() {}
    
    public Import (String test) {
        this.test = test;
    }
    
    public Object getProperty(int arg0) {
    
        switch (arg0) {
    
        case 0:
            return test;
        default:
            return test;
        }
    
    }
    
    public int getPropertyCount() {
        return 1;
    }
    
    public void getPropertyInfo(int arg0, Hashtable arg1, PropertyInfo arg2) {
    
        switch (arg0) {
        case 0:
            arg2.type = PropertyInfo.STRING_CLASS;
            arg2.name = "test";
            break;
        default:
            break;
        }
    
    }
    
    public void setProperty(int arg0, Object arg1) {
    
        switch (arg0) {
        case 0:
            test = (String) arg1;
            break;
        }
    
    }
    

    }

    Just changes the variables so it fit's your need. And then:

            SoapObject soapObject = new SoapObject(NAMESPACE_NIST_IMPORT,
                    METHOD_NAME_NIST_IMPORT);
    
           Import import= new Import("Hello, World!");
    
            PropertyInfo pi = new PropertyInfo();
            pi.setName("req");
            pi.setValue(import);
            pi.setType(import.getClass());
            soapObject.addProperty(pi);
    
    
            SoapSerializationEnvelope soapSerializationEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    
            soapSerializationEnvelope.setOutputSoapObject(soapObject);
    
            soapSerializationEnvelope.addMapping(NAMESPACE, "Import", new Import().getClass());
    

    To parse the response:

            SoapObject response = (SoapObject)soapSerializationEnvelope.getResponse();
            Import.test=  response.getProperty(0).toString();