Отправка и получение сложных данных через ksoap2 в Android [Ошибка в сериализации] - PullRequest
0 голосов
/ 10 июня 2011

Ну, у меня есть сервер, у которого есть метод

  • получает MonitorRequest (Сериализуемый объект)
  • возвращает MonitorResponse [] (Сериализуемый объект)
  • Каждый MonitorResponse содержит MonitorDetail, в котором есть нужная мне информация.

код:

class MonitorDetail implements Serializable{
    String name;
    //Long, Short, String (...)
}

class MonitorResponse implements Serializable{
    Short returnCode;
    MonitorDetail monitorCodeList; //the request can request more than 1 monitor info.
    String user;
}

class MonitorRequest implements Serializable {
    Integer storeCode;
    Short categoryCode;
    Long[] monitorCodeList; //here I post the code of the monitors I need
    String user;
    //getters and setters
}

Итак, вот мой вопрос: Я не могу изменить определение этих объектов на сервере, так как я могу сделать это сообщение, не получая «ошибка сериализации».

Как я могу отправить ProductRequest, получить ProductResponse [] и получить конкретный ProductDetail через KSOAP2?

Я пробовал:

SoapObject request = new SoapObject(NAMESPACE, OPERATION);
request.addProperty(PROPERTY, getProductConfiguredMonitorRequest());

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

HttpTransportSE httpTransport = new HttpTransportSE(URL);
enter code here
try {
    httpTransport.call("", envelope);
    SoapObject result = (SoapObject) envelope.bodyIn;
    return extractMonitorDetailFromResult(result);
} catch (Exception e) {
    /* a lot of stuff */
    return null;
}
return null;

Итак, как я могу сделать это сообщение?

1 Ответ

0 голосов
/ 10 августа 2011

Вы получаете ответ на конверт вместо bodyIn, а затем анализируете объект SoapObject, который вы получаете в цикле.

...