Search code examples
javasoapksoap2

Not able to get the values from soap response


This is my code

SoapObject request = new SoapObject(NAMESPACE,METHOD_NAME);
    request.addProperty("MobileNbr","9959077764");
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet=true;
    envelope.setOutputSoapObject(request);
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    try {
        androidHttpTransport.call(SOAP_ACTION, envelope);
        androidHttpTransport.debug = true;
        SoapObject response = (SoapObject)envelope.bodyIn;
        System.out.println(response);
        String result = response.getProperty(0);
        System.out.println(result);
    }catch (XmlPullParserException | IOException e) {
        e.printStackTrace();
    }   

This is the Response I'm getting.

GetCabListResponse{GetCabListResult=<CabList><status>0</status><cab>AP09BS9127</cab><cab>AP09BS9126</cab></CabList>; }

This is the result getting from response.getProperty(0);

<CabList><status>0</status><cab>AP09BS9127</cab><cab>AP09BS9126</cab></CabList>

I want the values of status and cab


Solution

  • Here's a regex solution to extract your data from returned XML:

        String cab ="<CabList><status>0</status><cab>AP09BS9127</cab><cab>AP09BS9126</cab></CabList>";
        Pattern p = Pattern.compile("<status>([^<]+)</status><cab>([^<]+)</cab>");
        Matcher m = p.matcher(cab);
        if(m.find()) {
            System.out.println("Status: " + m.group(1));
            System.out.println("Cab: " + m.group(2));
        }
    

    Multiple cabs:

        String cab ="<CabList><status>0</status><cab>AP09BS9127</cab><cab>AP09BS9126</cab></CabList>";
        Pattern p = Pattern.compile("<status>([^<]+)</status>((<cab>([^<]+)</cab>)*)");
        Matcher m = p.matcher(cab);
        if(m.find()) {
            System.out.println("Status: " + m.group(1));
            List<String> cablist = Arrays.asList(m.group(2).replace("<cab>", "").replace("</cab>", "#").split("#"));
            System.out.println("Cab: " + cablist);          
        }