Обработка векторов с помощью Ksoap2 в Android - PullRequest
0 голосов
/ 17 марта 2011

В рамках моего проекта мне нужен доступ к веб-сервису на Java (Axis) с использованием ksoap2.Этот веб-сервис вернет вектор объектов Customer. Моя проблема в том, что я не могу обработать этот вектор в Ksoap2 в Android. Я пробовал много способов.Не понимаю, как это сделать.Я прочитал о сортировке в ksoap2.Это нужно для решения моей проблемы. Если так, как я могу маршал Vector в Ksoap2.Кто-нибудь, пожалуйста, помогите мне .......

Ответы [ 2 ]

1 голос
/ 08 апреля 2012

Если вы зарегистрируете класс сложных объектов, которые вы хотите получить (элементы векторов), ksoap2 попытается затем преобразовать, чтобы получить вектор с объектами зарегистрированного класса вместо вектора, содержащего SoapObjects. Для регистрации класса с помощью ksoap необходимо, чтобы ваш класс реализовал KvmSerializable, который позволяет десериализовать объекты в ответе путем доступа к свойствам и назначения значений, полученных из веб-службы. В зависимости от класса вам может потребоваться зарегистрировать несколько маршалов (например, для десериализации полей типа int, Double и Float вашего класса).

Регистрация может быть сделана:

envelope.addMapping(namespace, typeName, clazz);

Где namespace id - пространство имен типа (как можно найти в wsdl), typename - это имя типа (также показано в wsdl), а clazz - класс, который вы хотите зарегистрировать.

Надеюсь, это поможет!

1 голос
/ 30 мая 2011

В моем проекте я проанализировал объект из ответа ksoap2 вручную, как описано здесь: http://seesharpgears.blogspot.com/2010/10/web-service-that-returns-array-of.html

По сути, вы перебираете объект SoapObject, полученный вами в качестве ответа, и создаете объекты Customer.

Category[] categories = new Category[soap.getPropertyCount()];
    for (int i = 0; i < categories.length; i++) {
        SoapObject pii = (SoapObject)soap.getProperty(i);
        Category category = new Category();
        category.CategoryId = Integer.parseInt(pii.getProperty(0).toString());
        category.Name = pii.getProperty(1).toString();
        category.Description = pii.getProperty(2).toString();
        categories[i] = category;
    }

Код взят из seeharpgears, кредит идет туда. Если у вас все еще есть проблемы с синтаксическим анализом ответа, потребуется дополнительная информация, чтобы помочь в дальнейшем (например, xml-response ...)

...