Отправлять и получать сложные данные через ksoap2 в Android [Ошибка при сериализации]

#android #xmlserializer #ksoap2 #serializable #ksoap

#Android #xmlserializer #ksoap2 #сериализуемый #ksoap

Вопрос:

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

  • получает запрос монитора (сериализуемый объект)
  • возвращает 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:

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

Смотрите больше на

http://code.google.com/p/ksoap2-android/wiki/CodingTipsAndTricks