Создание Java из WSDL для использования на Android с клиентом ksoap2-android SOAP?

Мне нужно получить доступ к существующему веб-сервису SOAP из приложения для Android. Мне были предоставлены некоторые файлы WSDL, описывающие веб-сервис. Читая некоторые другие ответы здесь на SO , кажется, что ksoap2-android – это путь, по отношению к которому клиент SOAP будет использоваться.

Следующая проблема заключается в том, как сгенерировать классы Java, необходимые из файлов WSDL, и именно здесь я немного отстаю. Насколько я вижу, существуют следующие варианты:

  1. Генератор кода AXIS2
  2. WSDL2ksoap
  3. Инструмент wsimport JAX-WS

Я изначально попробовал # 1, с плагином Eclipse AXIS2 для генератора wsdl2code. Мастер успешно сгенерировал много кода Java, однако он также изменил мой проект андроида на какой-то проект webservice, и я никогда не мог получить ничего, что было сгенерировано для компиляции, не говоря уже о работе с ksoap2-android. У кого-то есть успех?

Я не могу успешно запустить wsdl2ksoap, поскольку для него, похоже, требуется работающий webservice, и все, что у меня есть в текущий момент, – это файлы WSDL. Точно так же от чтения веб-страницы, это, кажется, проект на начальных этапах, и не совсем готовый к прайм-тайм.

JAX-WS wsimport У меня еще не было возможности попробовать. Однако я не уверен, что то, что он генерирует, будет работать с ksoap2-android?

Вопрос: Как я могу генерировать файлы Java из файлов WSDL, для использования на Android с клиентской библиотекой ksoap2-android SOAP?

Заранее большое спасибо.

(PS: Да, выбор SOAP, он субоптимальный для использования Android, но я не могу этого изменить).

Solutions Collecting From Web of "Создание Java из WSDL для использования на Android с клиентом ksoap2-android SOAP?"

Я нашел этот инструмент, чтобы автоматически генерировать wsdl для android-кода,

http://www.wsdl2code.com/example.aspx

Вот код:

public void callWebService() { SampleService srv1 = new SampleService(); Request req = new Request(); req.companyId = "1"; req.userName = "userName"; req.password = "pas"; Response response = srv1.ServiceSample(req); } 

У меня была схожая ситуация (у меня был только wsdl файл без работы webservice). Я использовал

http://easywsdl.com/

Для создания классов для Android без каких-либо проблем. Этот инструмент использует библиотеку ksoap. Самое замечательное в этом инструменте заключается в том, что он поддерживает расширения и типы WCF, такие как данные с атрибутом IsReference или Guid.

Мое заключение после довольно много исследований заключается в том, что, к сожалению, такого (зрелого) инструмента нет. Ни AXIS2, ни JAX-WS не будут работать на Android, а WSDL2ksoap просто слишком незрелый для реального использования.

Однако есть запатентованный инструмент wsclient ++ , который сделает работу действительно хорошо. (Прочитайте обновление ниже, когда его поместили в реальное использование, он не выдерживает дистанции.) Он не использует клиентскую библиотеку ksoap2-android, у нее есть свои собственные.

Клиентская библиотека немного грубо, поскольку она сильно зависит от транспорта HTTP, что делает (единицу) тестирование немного сложнее. Но его можно легко модифицировать, чтобы позволить DI, поскольку источник доступен в распределенном файле jar.

Однако генератор wsdl для java работает просто отлично, и мы сможем сэкономить массу времени.

Обновление После работы с wsclient++ некоторое время ясно, что сгенерированные классы действительно грубые и вообще не обрабатывают случаи ошибок. (Каждый метод объявляет throws Exception ).

Мы больше не используем wsclient ++, и я бы не рекомендовал его использовать! К сожалению, мы не нашли никакой рабочей альтернативы. : /

В итоге мы конвертировали наши файлы WSDL с помощью AXIS2, а затем написали кучу пользовательского скрипта, чтобы разбить и преобразовать сгенерированные файлы Java в нечто, что будет использоваться на android, используя библиотеку ksoap2-android. Очень хаки, и ему нужны тонны ручного труда. К сожалению. Если вы найдете лучший способ или один из них, пожалуйста, предоставьте новый ответ.

Я использовал для iPhone тоже некоторые автоматически сгенерированные классы, которые я тоже хотел увидеть здесь.

Wsdl2code является одним из подобных, что я использовал на iPhone. Дайте URL-адрес с файлом wsdl, который вы получите для загрузки некоторых классов. Для меня самой сложной задачей было загрузить нужные детали. Потребовалось более 2 минут поиска 🙂 ksoap2-android-assembly-3.0.0-jar-with-dependencies.jar необходимо было загрузить и перетащить объявление в ADT (Eclipse). Это очень просто, особенно если вы использовали аналог iPhone. – аналогичный инструмент, который я использовал.

Однако в моем случае я совсем не доволен решением, потому что вижу, что я использую пушку, набор пушек, чтобы выстрелить воробья. В моем случае он должен использовать HTTP-сообщение и не включать зависимости от других библиотек.

Честно говоря, меня не волнует, потому что, как только серверная сторона верят, что у нас есть неограниченная мощность батареи и неограниченный план данных, я закрываю глаза, и я не забочусь о маршалингах – бесполезных накладных расходах, которые используют процессор (батарея ) Увеличивают данные, передаваемые по сети.

В худшем случае это должен быть JSON + HTTP POST, а не SOAP для мобильных телефонов …

Я бы предложил поговорить на стороне сервера и объяснить им, почему это не хорошо, если они делают 2 щелчка на мастерах, и мы делаем другие клики по формам, чтобы получить сгенерированный код. По крайней мере, в то время как приложение не является огромным, даже если бюджет должен оптимизировать для мобильных приложений с несколькими интерфейсами.

Я использую инструмент Apache CXF только для создания dto, и я написал класс для выполнения базового unmarshalling, основанного на имени элементов

Немного поздно, но в разработке находится генератор-заглушка ksoap2, и я успешно использовал его для создания заглушек.

http://ksoap2-stub-gen.sourceforge.net/

Также кто-то сделал его доступным как онлайн-сервис (т. Е. Вы указываете URL-адрес WSDL, и служба вернет zip-файл, содержащий заглушки).

http://www.davidgouveia.net/2011/04/online-stub-generator-for-android-applications-using-ksoap2/