Python Zeep — несколько файлов WSDL

У меня есть два отдельных файла WSDL, которые предоставляются мне для взаимодействия со службой, один файл WSDL просто предоставляет метод для входа в систему и создания токена доступа. Другой файл WSDL предоставляет методы для фактического взаимодействия с системой.

Если я создаю экземпляр клиента zeep SOAP с первым файлом WSDL для входа в систему, нужно ли мне повторно создавать клиент для следующего файла WSDL или я могу просто сказать ему перейти к следующему файлу WSDL?

from zeep import Client

client = Client("https://url.service.com/Session?wsdl")
token = client.service.login(username, password)

client = Client("https://url.service.com/Object?wsdl")
client.service.find(token, 'filter')

Я пытался использовать create_service, но не думаю, что использую его правильно.

Благодарю вас!


person Douglas Plumley    schedule 07.11.2018    source источник


Ответы (1)


Вам необходимо повторно создать второй клиент.

Я предполагаю, что вам также потребуется расширить свой код, чтобы использовать те же запросы Session и Zeeps Transport.

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

transport = Transport(session=Session())

client = Client("https://url.service.com/Session?wsdl", transport=transport)
token = client.service.login(username, password)

client = Client("https://url.service.com/Object?wsdl", transport=transport)
client.service.find(token, 'filter')
person Jostein L    schedule 20.12.2018
comment
Я думаю, что на данный момент это ответ (и это то, что я делал). В моем конкретном случае мне не приходилось использовать сеансы, потому что я передаю токен обратно в веб-службу при каждом вызове. Я отредактирую ответ, чтобы отразить это. - person Douglas Plumley; 21.12.2018