Найти - Пользователи
Полная версия: Soap + Zeep
Начало » Python для экспертов » Soap + Zeep
1
VadimK
Подскажите как при помощи Zeep библиотеки составить SOAP запрос приведенный ниже. Т.е. в данный момент я могу его сформировать как текст и при помощи request запостить на сервер.
Но все таки не просто так существуют SOAP клиенты, хочется их использовать. Выбрал Zeep , но примеры его использования примитивные, типа запросить soap метод с парой параметров.
А в моем случае тело запроса достаточно сложное и никак не пойму как его сформировать (не через raw текст).

Буду благодарен за примеры, как создавать блоки, аттрибуты в хедере, теле запроса.

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<UserAuth>
<userid>12345</userid>
<password>qwerty</password>
</UserAuth>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<add_labels>
<partnerorderid>111</partnerorderid>
<kepoluserid>222</kepoluserid>
<paymentpin>333</paymentpin>
<labels>
<orderedLabel>
<partnerorderartid>123</partnerorderartid>
<productcode>CC</productcode>
<parcelweight>1</parcelweight>
<sendername>UAB Sirius</sendername>
<sendermobile>003700000001</sendermobile>
<senderaddresscountry>LT</senderaddresscountry>
<receivername>Vardenis Pavardenis</receivername>
<receivermobile>003700000002</receivermobile>
<targetmachineidentification>0119</targetmachineidentification>
<boxsize>XSmall</boxsize>
<printtype>terminal</printtype>
</orderedLabel>
</labels>
</add_labels>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
VadimK
Сам себе отвечаю:
         request_data = {
            'partnerorderid': 123,
            'kepoluserid': 'aaa',
            'paymentpin': 'bbb',
            'labels': [{
                    'boxsize': 'XSmall',
                    'printtype': 'terminal',
            }]
        }
client.service.add_labels(_soapheaders={'UserAuth': {'userid': '123', 'password': 'qwerty'}, **request_data)

Спасибо stackoverflow.
doza_and
Извините за оффтопик, но очень яркий пример. С самого написания топика с интересом за ним наблюдал, задаваясь себе вопросом “интересно много сейчас людей которые пользуются SOAP?”.

Результат характерный, так никто и не ответил…
Как выглядит решение ТС? Оно выглядит как прямой перевод xml в json!

Таким образом похоже SOAP клиенты существуют не зря? Они заплатки которые борются с переусложненным стандартом SOAP, и пакует безумно многословный xml приводя это в некое подобие json. :).

Так стоит ли для новых проектов сейчас использовать SOAP/XML? Я сам много раз согласовывал протоколы обмена, где разработчики предлагали xml. Беседы по душам с вопросами а это зачем, а тут что приводили к переходу на json и сокращению объема сообщений в 2-30 раз. Да да иногда в 30! Ну это конечно на совести разработчиков а не формата.

py.user.next
VadimK
Подскажите как при помощи Zeep библиотеки составить SOAP запрос
Да этот модуль какой-то забагованный вечно. Сколько раз вопросы тут были уже, так каждый раз какие-то глюки в самом модуле.
VadimK
doza_and
Так стоит ли для новых проектов сейчас использовать SOAP/XML?
У многих старых крупных контор в качестве API именно SOAP. И в ближайшие года никто там ничего менять не будет. Особенно если это какие нибудь почтовые службы и банки.

Так что топить за JSON, когда требуется реализовать SOAP клиента - не совсем корректно.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB