How to retrieve array of objects as a result from KSOAP web service in Android?
Asked Answered
L

2

10

If I am trying to retrieve first array using (String) response.getProperty(0); but it was returning me a full string.

**Here is the code of webservice calling**

public static Object getResponse(String methodName, String actionName, LinkedHashMap<String, String> valueStrings)
{
    SoapObject soapObject = new SoapObject(LetUsClickAPIConstants.COMMON_NAMESPACE, methodName);
    Object response = null;
    for (Map.Entry<String, String> mapKeys : valueStrings.entrySet())
    {
        soapObject.addProperty(mapKeys.getKey(), mapKeys.getValue());
    }
    final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet = false;
    envelope.setOutputSoapObject(soapObject);
    final AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(LetUsClickAPIConstants.COMMON_URL);
    try
    {
        androidHttpTransport.call(actionName, envelope);
        response = envelope.getResponse();
        Log.d("Response ", response.toString());
    } catch (final IOException e)
    {
        Log.d("Exception", "" + e);
    } catch (final XmlPullParserException e)
    {

        Log.d("Exception", "" + e);
    }
    return response;

}

I got an response in Vector type

[Client{UserId=93; nickName=ladies; }, Client{UserId=94; nickName=ABCD; }]

Here is the image of return response

I have tried many ways but I am not success to retrieve in any way?

Lanoralanose answered 16/12, 2011 at 11:14 Comment(0)
L
0

Use FolloWing code..

Soapresponse = Ksoap.CallService("SOAP_METHOD_NAME);

        try {
            if (Soapresponse != null) {
                SoapObject Soapresult = (SoapObject) Soapresponse
                        .getProperty(0);

                if (Soapresult != null) {
                    SoapObject Dataset = (SoapObject) Soapresult
                            .getProperty(1);
                    if (Dataset != null) {
                        SoapObject Table = (SoapObject) Dataset
                                .getProperty(0);
                        if (Table != null) {
                            UserId= new String[Table.getPropertyCount()];
                            nickName= new String[Table
                                    .getPropertyCount()];

                            for (int i = 0; i < total_News; i++) {
                                SoapObject row = (SoapObject) Table
                                        .getProperty(i);

                                UserId[i] = row.getProperty("UserId")
                                        .toString();
                                nickName[i] = row.getProperty(
                                        "nickName").toString();
                                                                }
                        }
                    }
                }
            }

        } catch (NullPointerException f) {

        } catch (ClassCastException d) {

        }
Lane answered 16/12, 2011 at 12:5 Comment(0)
R
0

Parse the string for the parts you want. Using regex or Substring function of String Class.

Rhapsodic answered 16/12, 2011 at 12:7 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.