преобразование пены в провал - PullRequest
3 голосов
/ 08 апреля 2020

Я заменил клиент 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,
            )
...