Я никогда не использовал SOAP раньше, и я немного новичок в Python. Я делаю это, чтобы познакомиться с обеими технологиями. Я установил SOAPlib и попытался прочитать их клиентскую документацию, но не очень хорошо ее понимаю. Могу ли я найти что-нибудь еще, что больше подходит для клиентской библиотеки SOAP для Python?
Изменить: На всякий случай, если это помогает, я использую Python 2.6.
python
soap
soap-client
Дэймон
источник
источник
Ответы:
Обновление (2016):
Если вам нужен только клиент SOAP, есть хорошо поддерживаемая библиотека под названием zeep . Он поддерживает как Python 2 и 3 :)
Обновить:
В дополнение к тому, что упомянуто выше, я буду ссылаться на страницу Python WebServices, которая всегда обновлена со всеми активно поддерживаемыми и рекомендованными модулями для SOAP и всех других типов веб-сервисов.
К сожалению, на данный момент я не думаю, что есть «лучшая» библиотека Python SOAP. Каждый из основных доступных имеет свои плюсы и минусы.
Старые библиотеки:
SOAPy : был «лучшим», но больше не поддерживал. Не работает на Python 2.5+
ZSI : Очень болезненно использовать, и разработка идет медленно. Имеет модуль под названием «SOAPpy», который отличается от SOAPy (см. Выше).
«Новые» библиотеки:
SUDS : Очень Pythonic, и легко создавать WSDL-потребляющих клиентов SOAP. Создание серверов SOAP немного сложнее. (Этот пакет не работает с Python3. Для Python3 см. SUDS-py3)
SUDS-py3 : версия SUDS для Python3
spyne : создавать серверы легко, создавать клиентов немного сложнее. Документация несколько отсутствует.
Ladon : Создание серверов очень похоже на soaplib (с использованием декоратора). Ladon предоставляет больше интерфейсов, чем SOAP, без необходимости в дополнительном коде пользователя.
pysimplesoap : очень легкий, но полезный как для клиента, так и для сервера - включает интеграцию с сервером web2py, которая поставляется с web2py.
Из всего вышесказанного я использовал только SUDS лично, и мне это очень понравилось.
источник
urllib2
проблема Python . Смотрите мой ответ для более подробной информации.Я последовал совету других ответов на этот вопрос и попробовал SUDS . После использования этого "в гневе" я должен согласиться: SUDS очень хорош! Настоятельно рекомендуется!
Я столкнулся с проблемой вызова веб-служб на основе HTTPS из-за прокси. На момент написания статьи это затрагивало все клиенты веб-сервисов Python, которые используют
urllib2
, поэтому я опишу решение здесь.urllib2
Модуль доставка с питоном 2.6.2 и ниже не будет выдаватьCONNECT
на прокси - сервер для HTTPS-над-HTTP-прокси сессии. Это приводит к длительному тайм-ауту или, если вам повезет, ошибке, которая выглядит следующим образом:Это была проблема 1424152 на багтрекере Python. К отчету об ошибках прикреплены патчи, которые исправят это в Python 2.x и Python 3.x. Проблема уже исправлена .
источник
У меня был хороший опыт работы с SUDS https://fedorahosted.org/suds
Использовал их TestSuite в качестве документации.
источник
pip install suds-jurko
SUDS это путь, нет сомнений.
источник
Просто предупреждение FYI для тех, кто смотрит на SUDS, пока этот билет не будет разрешен, SUDS не поддерживает тэг "choice" в WSDL:
https://fedorahosted.org/suds/ticket/342
смотрите: suds и тег выбора
источник
SUDS прост в использовании, но не гарантирует повторного входа. Если вы сохраняете объект WSDL Client () в многопоточном приложении для повышения производительности, существует некоторый риск. Решение этого риска, метод clone (), выдает неисправимую ошибку Python 5508, которая, кажется, печатает, но не выдает исключение. Может быть запутанным, но это работает. Это по-прежнему лучший клиент Python SOAP.
источник
Мы выпустили новую библиотеку: PySimpleSOAP , которая обеспечивает поддержку простого и функционального клиента / сервера. Его целями являются: простота использования и гибкость (не требуются классы, автоматически сгенерированный код или xml), самоанализ и генерация WSDL, соответствие стандарту WS-I, совместимость (включая Java AXIS, .NET и Jboss WS). Он включен в Web2Py для поддержки решений с полным стеком (дополняющих другие поддерживаемые протоколы, такие как XML_RPC, JSON, AMF-RPC и т. Д.).
Если кто-то изучает SOAP или хочет исследовать его, я думаю, что это хороший выбор для начала.
источник
Я считаю, что soaplib отказался от своего SOAP-клиента («отправитель») в пользу suds. На этом этапе soaplib стремится быть независимым от веб-фреймворка сервером SOAP («получателем»). В настоящее время soaplib находится в активной разработке и обычно обсуждается в списке рассылки Python SOAP:
http://mail.python.org/mailman/listinfo/soap
источник
В моем заключении мы имеем это:
Мыло на стороне клиента:
Использовать только Suds-Jurko (обновлено 2016) suds хорошо поддерживается и обновляется.ОБНОВЛЕНИЕ 06/2017: библиотека suds-jurko не обновлена и, по- видимому, заброшена ,
Я тестировал библиотеку zeep, но получил ограничения по токенам, теперь просто поддерживаю UsernameToken, я сообщаю об ошибке при создании токена метки времени и обновляю код автора, чтобы исправить его.
Zeep хорошо запускается и имеет хорошую документацию , поэтому я недавно перенес свой код из suds в zeep и работает нормально.
Сторона сервера мыла:У нас есть TGWS, soaplib (pysimplesoap не тестировался), ИМХО, и мыло помощи должно быть выбором.С уважением,
источник
Как я предложил здесь, я рекомендую вам сделать свой собственный. На самом деле это не так сложно, и я подозреваю, что по этой причине не существует лучших библиотек Python SOAP.
источник
пена довольно хорошо. Я попробовал SOAPpy, но не смог заставить его работать так, как мне нужно, в то время как suds работал практически сразу.
источник
Может ли это помочь: http://users.skynet.be/pascalbotte/rcx-ws-doc/python.htm#SOAPPY
Я обнаружил это путем поиска
wsdl
иpython
, с рациональной точки зрения, что вам потребуется wsdl-описание SOAP-сервера для выполнения любых полезных клиентских оболочек ....источник
Мы использовали SOAPpy из Python Web Services , но кажется, что ZSI (тот же источник) заменяет его.
источник
Я использую SOAPpy с Python 2.5.3 в производственных условиях.
Мне пришлось вручную редактировать пару файлов в SOAPpy (что-то с тем, что код заголовка находится в неправильном месте), но кроме этого он работал и продолжает делать это очень надежно.
источник