Я ищу клиент python SOAP 1.2, но кажется, что это не существует. Все существующие клиенты или не maintainted или только совместимы с SOAP 1.1:
Библиотека zeep поддерживает как SOAP 1.1 и 1.2, если WSDL службы правильно указывает это.
WSF / Python поддерживает SOAP 1.2.
ВВЕДЕНИЕ
WSF / Python - это расширение языка Python для WSO2 WSF / C [ http://www.wso2.org/projects/wsf/c] {. {1}} Эта версия позволяет использовать / предоставлять веб-службы как с REST, так и с SOAP.
- Поддержка REST
- Поддержка SOAP 1.1
- Поддержка SOAP 1.2
Для загрузки вам не нужно регистрироваться. Просто нажмите «отправить» в самом низу.
Примеры можно найти в загруженном архиве, например:
LOG_DIR = '/tmp/'
LOG_LEVEL = 4
WSFC_HOME = '/opt/wso2/wsf_c'
END_POINT = 'http://localhost:9090/axis2/services/echo/echoString'
if __name__ == '__main__':
message = """
<ns1:echoString xmlns:ns1="http://ws.apache.org/axis2/services/echo">
<text>Hello World!</text>
</ns1:echoString>
"""
try:
client = wso2.wsf.WSClient({
'to':END_POINT,
'WSF_LOG_DIR':LOG_DIR,
'WSF_LOG_LEVEL':LOG_LEVEL,
'WSFC_HOME':WSFC_HOME,
})
print 'Sending: ' + message
response = client.request(message)
if response is not None:
print 'Respose: ' + response + '\n'
else:
print 'Error occurred!'
except wso2.wsf.WSFault, e:
print 'Exception occurred:'
print e
У меня было очень похожая проблема несколько лет назад, и я решил ее с помощью Jython.
Если не существует реализации SOAP 1.2 для Python, вас может заинтересовать Jython , который легко интегрирует вас с платформой Java. Это означает, что вы можете использовать любой из существующих SOAP 1.2 Java-классов и просто импортировать его в свою программу Jython. Ваша программа Jython - это просто ваша программа Python, но вы можете импортировать классы Java.
Сам Jython включает почти все модули в стандартный дистрибутив языка программирования Python, но убедитесь, что ваша программа не использует какую-либо специальную нестандартную библиотеку Python.
Пример: скажем, у вас установлен Jython (он бесплатный и с открытым исходным кодом), а ваша программа Python называется myprog.py, и вы хотите использовать класс Java CLASSNAME:
1) импортировать требуемый класс Java вставив import CLASSNAME
в ваш myprog.py
2) запустите jython myprog.py
Если вы действительно хотите использовать SOAP 1.2, хотя он еще не используется в качестве стандарта, я считаю, что могу опубликовать ответ, который требует некоторой работы (все ради общего блага :)
).
Я рекомендую вам использовать gSOAP:
gSOAP - простой в использовании, кроссплатформенный инструментарий для любителей C/C++ для разработки веб-сервисов на основе XML и XML парсеров. Хотя он хорошо известен как инструментарий для разработки веб-сервисов и была доказана его хорошая производительность, он также может быть использован для создания высокопроизводительных парсеров XML, сериализаторов и десериализаторов из XML схем или структур/классов языка C/C++. Мои экспериментальные результаты показывают, что парсеры XML, созданные с помощью gSOAP работают в несколько раз быстрее, чем парсеров xerces-c в режиме DOM или SAX режиме.
Хотелось бы, чтобы все было так просто. Поскольку gSOAP является библиотекой C++, вам придется обернуть ее, чтобы использовать в Python.
Одним из способов обернуть библиотеку является использование инструмента под названием SWIG (Simplified Wrapper and Interface Generator). Этот инструмент автоматически оборачивает библиотеки C/C++ для использования в языках высокого уровня, например (вы угадали) в Python.
Я также рекомендую вам прочитать этот PDF файл (со страницы 14) о реализации gSOAP с помощью C++. Это очень полезно.
Используя это решение, вы сможете использовать хорошо изученную библиотеку, SOAP 1.2 и очень хорошее соотношение производительности. Думаю, вы будете вполне довольны результатами.