Как получить доступ ко всем методам веб-сервиса из Soap-клиента Python с несколькими привязками с помощью Python zeep

#python #web-services #soap #wsdl #zeep

#python #веб-сервисы #soap #wsdl #zeep

Вопрос:

Я должен использовать данные из SOAP-сервиса, что является для меня новой технологией. Я подключился с сервера, используя следующий код:

 from requests import Session
from requests.auth import HTTPBasicAuth
from zeep import Client
from zeep.transports import Transport

wsdl= 'my_service.com/MEX?wsdl'
username = 'john_doe'
password = 'password'

session = Session()
session.auth = HTTPBasicAuth(username, password)
transport = Transport(session=session)
client = Client(wsdl=wsdl, transport=transport)
  

Используя программное обеспечение SoapUI и подключаясь к этому серверу, я понял, что у него три привязки, и у каждой из них много веб-сервисов. Но с помощью Python я смог получить доступ только к веб-сервисам (через client.service) для первой привязки. Я хочу знать, как я могу получить доступ к методам веб-сервиса из двух других привязок.

OBS: client.wsdl.bindings возвращает dict, сопоставляющий некоторые URL-адреса, содержащие имена привязок, отображаемые в SoapUI, экземплярам Soap11Binding.

Ответ №1:

По умолчанию Zeep выбирает первую привязку в WSDL. Эта привязка доступна через client.service . Чтобы использовать конкретную привязку, вы можете использовать bind() метод в примере кода объекта клиента:

 service2 = client.bind('SecondService', 'Port12')
service2.someOperation(arg1='abc', arg2=2)