Ksoap на Android - получить ответ списка от веб-службы Java

1

У меня есть веб-сервис java (soap), который я хочу использовать с клиентом android для этого, используя ksoap.

Мой веб-сервис дает ответ, который выглядит следующим образом:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns2:listealbumResponse xmlns:ns2="http://ws/">
            <return xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:album">
                <annee>2008</annee>
                <id>6</id>
                <titre>Ninja Tuna</titre>
            </return>
            <return xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:album">
                <annee>2008</annee>
                <id>10</id>
                <titre>Fine Music, Vol. 1</titre>
            </return>
            <return xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:album">
                <annee>2004</annee>
                <id>14</id>
                <titre>Bob Acri</titre>
            </return>
            <return xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:album">
                <annee>2009</annee>
                <id>54</id>
                <titre>Rated R</titre>
            </return>
        </ns2:listealbumResponse>
    </S:Body>
</S:Envelope>

, который представляет собой список объектов

Чтобы вызвать мой веб-сервис, я использую этот код:

try{
        SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = false;

        envelope.setOutputSoapObject(Request);

        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

        androidHttpTransport.call(SOAP_ACTION, envelope);


        SoapObject result = (SoapObject)envelope.getResponse();

Когда я протестировал "результат" моего ответа, он получил только один объект, как я мог получить весь список и проанализировать его?

Теги:
list
web-services
android-ksoap2

3 ответа

3

Проблема заключалась в том, что когда я разбираю ответ на мыло, у меня есть только первый объект списка, поэтому я меняю эту строку:

SoapObject result = (SoapObject)envelope.getResponse();

с:

SoapObject result = (SoapObject)envelope.bodyIn;

wiht, что я получил весь список, и я добавляю это

testValues = new String[result.getPropertyCount()];
    for(int i= 0; i< result.getPropertyCount(); i++){
        testValues[i] = result.getProperty(i).toString(); 

    }

Удачи вам и спасибо Януш

1

код:

SoapObject result = (SoapObject)envelope.bodyIn;    
String output = "";    
for(int i= 0; i< result.getPropertyCount(); i++){
    SoapObject object = (SoapObject)response.getProperty(i);

    output += "annee : " + object.getProperty("annee") + "\n";
    output += "id : " + object.getProperty("id") + "\n";
    output += "titre : " + object.getProperty("titre") + "\n";

}
0

Результатом является одиночный SoapObject, однако эти объекты должны иметь свойство для каждого элемента в запрошенном списке. Вы можете сделать что-то подобное, чтобы получить все элементы:

private static List parseLists(List listItems, SoapObject response) {
    int propertyCount = response.getPropertyCount();
    for (int currentProperty = 0; currentProperty < propertyCount; currentProperty++) {
        Object input = response.getProperty(currentProperty);
        Object result = parseObject(input.toString());
        if (result != null) {
            listItems.add(result);
        }
    }
    return listItems;
}
  • 0
    Привет, спасибо, что ответили. Я постараюсь дать более подробную информацию: ожидаю чего-то подобного от моего веб-сервиса {{"id1"; "year"; "title"}; {"id2"; "year"; "title "}} но в моем soapObject я получил: {" id1 ";" year ";" titl "} я хотел бы получить список объектов

Ещё вопросы

Сообщество Overcoder
Наверх
Меню