#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)