Я заменил клиент suds SOAP на клиент Zeep SOAP, и я изо всех сил пытаюсь понять несколько вещей. 1-й: у меня был этот код инициализации клиента suds:
client.Client(
wsdl_path,
transport=suds_requests.RequestsTransport(session),
plugins=[LogSOAPMessages()],
cache=NoCache(),
location="https://<serverIP>/MYWS/MYWSDispatch.pl"
)
Я изо всех сил пытаюсь понять, как я должен заменить kwarg 'location' в функции инициализации клиента zeep.
2nd: в настоящее время инициализация клиента нового zeep выглядит так:
Client(
wsdl_path,
transport=Transport(session=session),
plugins=[LogSOAPMessages(), WsAddressingPlugin()]
)
, и первый вызов API для входа в систему выглядит следующим образом:
client.service.authenticate(
username=self.user,
password=self.password,
)
В suds это работало, но после замены на zeep возникает эта ошибка: zeep.exceptions.ValidationError: Missing element MYWSHeader (authenticate.MYWSHeader)
, но я могу найти решение или причину этой новой ошибки. почему это происходит и как я могу это исправить?
EDIT : похоже, что добавление MYWSHeader к запросу решило проблему, по какой-то причине это не было необходимо в запросе suds, хотя после осмотра XML я увидел, что это необходимо. этот новый запрос работал:
client.service.authenticate(
MYWSHeader={'key1':'','key2':''}
username=self.user,
password=self.password,
)