ksoap2-android и массивы в запросе

Автор: admin от 30-06-2012, 04:39, посмотрело: 2347

Привет, %username%.

Возможно, всё это окажется очень тривиальным, но проблема стоила мне довольно долгого изучения документации, stackoverflow, стека вызовов и исходников ksoap2. Возможно, это сэкономит кому-то лишние пару часов.

Немножко сео: ksoap2 send array ArrayOfInt java.lang.StackOverflowError wsdl2ksoap скачать бесплатно торрент



Исходные условия: .NET WCF сервис и задача написать приложение для Android, с этим сервисом работающее.
Проблема: wsdl2ksoap прекрасно (насколько это возможно) сгенерировал все необходимые классы по WSDL-описанию SOAP-сервиса, и пока речь шла о простом взаимодействии типа «отправили циферку — получили какую-то структуру», всё шло великолепно. Конечно, кое-какие вещи пришлось подправить руками, и IntelliJ IDEA в этом очень помогла, но это мелочи.

Проблема появилась, когда на сервер нужно было отправлять массивы чисел, строк и enum'ов. Похоже, что ksoap2 просто не умеет нормально сериализовать объекты, унаследованные от сгенерированного wsdl2ksoap LiteralArrayVector, который, в свою очередь, всего-навсего Vector, реализующий интерфейс KvmSerializable. При попытке сериализации запроса всё валилось с java.lang.StackOverflowError, даже на простом ArrayOfInt (extends LiteralArrayVector).

В итоге, решение — всего лишь кастомный маршаллинг. Конечно немножко напряжно писать по маршаллеру на каждый тип ArrayOf, но, похоже, это необходимое зло. Маршаллер, конечно, нужно зарегистрировать в сгенерированном классе, соответствующем сервису.

А вот и пример: pastebin.com/3P6s0P7J
soapUI даст вам хорошее представление о том, как должен выглядеть SOAP-запрос, который ожидает сервер, и, соответственно, поможет заменить int на нужный тип, будь то string, SOME_ENUM или что-то ещё.



Источник: Android

Категория: Операционные системы » Android

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении: *