Suds обрабатывает заголовки иначе, чем Zeep?

У меня есть сценарий Python, использующий suds, который используется для подключения к службе SOAP в HPNA. Скрипт содержит:

import os
from urllib import parse
from urllib.request import pathname2url
from suds.client import Client
from suds.transport.http import HttpAuthenticated


sessionID = None
client = None
def initiate_conn(hostUrl, username, password):
    global sessionID
    global client

    host = hostUrl+'/soap'
    wsdl_file = parse.urljoin('file:', pathname2url(os.path.abspath("soap_bindings/hpna10_11_api.wsdl.soappy")))
    t = HttpAuthenticated(username=username, password=password)

    client = Client(wsdl_file, transport=t)
    client.set_options(location=host)  

    request = client.factory.create('loginInputParms')
    request.username = username
    request.password = password
    authObject = client.service.login(request)
    sessionID = authObject.Text

Недавно я решил отредактировать этот скрипт (скрипт был предоставлен HP), чтобы он работал с Zeep, но по какой-то причине я продолжаю получать ошибку заголовка всякий раз, когда пытаюсь запустить скрипт Zeep. Существует ли какой-то механизм автоматической обработки заголовков, который использует Suds, которого нет у Zeep? Я просмотрел сценарий suds несколько раз и не нашел ничего, что ссылается на заголовок, но по какой-то причине скрипт zeep просто выдает ошибки, говорящие об отсутствии заголовка.

Скрипт Zeep можно найти здесь:

#!/usr/bin/python3
import os
from zeep import Client
from zeep.transports import Transport
from zeep.wsse.username import UsernameToken
sessionID = None
client = None
global sessionID
global client
client = Client('hpna10_11_api.wsdl', wsse=UsernameToken('username', 'password'))
service = client.create_service('{http://hp.com/nas/10/10}NetworkManagementApiBinding', 'http://xxx.xxx.xxx.xxx/soap')
factory = client.type_factory('ns0')
creds = factory.loginInputParms(username = 'username', password = 'password')
service.login(creds)

Ошибка, которую я продолжаю получать, может быть найдена здесь:

./test2.py:8: SyntaxWarning: name 'sessionID' is assigned to before global declaration
  global sessionID
./test2.py:9: SyntaxWarning: name 'client' is assigned to before global declaration
  global client
Traceback (most recent call last):
  File "./test2.py", line 15, in <module>
    service.login(creds)
  File "/usr/local/lib/python3.5/dist-packages/zeep/client.py", line 41, in __call__
    self._op_name, args, kwargs)
  File "/usr/local/lib/python3.5/dist-packages/zeep/wsdl/bindings/soap.py", line 110, in send
    options=options)
  File "/usr/local/lib/python3.5/dist-packages/zeep/wsdl/bindings/soap.py", line 68, in _create
    serialized = operation_obj.create(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/zeep/wsdl/definitions.py", line 197, in create
    return self.input.serialize(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/zeep/wsdl/messages/soap.py", line 64, in serialize
    self.body.render(body, body_value)
  File "/usr/local/lib/python3.5/dist-packages/zeep/xsd/elements/element.py", line 191, in render
    self._render_value_item(parent, value, render_path)
  File "/usr/local/lib/python3.5/dist-packages/zeep/xsd/elements/element.py", line 215, in _render_value_item
    return self.type.render(node, value, None, render_path)
  File "/usr/local/lib/python3.5/dist-packages/zeep/xsd/types/complex.py", line 253, in render
    element.render(parent, element_value, child_path)
  File "/usr/local/lib/python3.5/dist-packages/zeep/xsd/elements/indicators.py", line 241, in render
    element.render(parent, element_value, child_path)
  File "/usr/local/lib/python3.5/dist-packages/zeep/xsd/elements/element.py", line 185, in render
    self.validate(value, render_path)
  File "/usr/local/lib/python3.5/dist-packages/zeep/xsd/elements/element.py", line 236, in validate
    "Missing element %s" % (self.name), path=render_path)
zeep.exceptions.ValidationError: Missing element RequestHeader (login.RequestHeader)

А сам WSDL можно найти здесь: https://drive.google.com/file/d/1VpLVwF-AMV4zDtZQClh5G2Mn0ZWwCB_n/view?usp=sharing

Спасибо за вашу помощь с этим

0 ответов

Другие вопросы по тегам