尝试登录出现 SUDS 错误的 ATWS

Trying to login to a ATWS with SUDS error

我正在尝试使用 suds 登录 ATWS 服务,但我不断收到以下错误:

Traceback (most recent call last):
  File "/Users/AAAA/Documents/Aptana/AutotaskUpdateTicketEstimatedHours/Main.py", line 38, in <module>
    handler = ConnectATWS()
  File "/Users/AAAA/Documents/Aptana/AutotaskUpdateTicketEstimatedHours/Main.py", line 31, in __init__
    client = Client(self.url)
  File "/Library/Python/2.7/site-packages/suds/client.py", line 112, in __init__
    self.wsdl = reader.open(url)
  File "/Library/Python/2.7/site-packages/suds/reader.py", line 152, in open
    d = self.fn(url, self.options)
  File "/Library/Python/2.7/site-packages/suds/wsdl.py", line 136, in __init__
    d = reader.open(url)
  File "/Library/Python/2.7/site-packages/suds/reader.py", line 79, in open
    d = self.download(url)
  File "/Library/Python/2.7/site-packages/suds/reader.py", line 95, in download
    fp = self.options.transport.open(Request(url))
  File "/Library/Python/2.7/site-packages/suds/transport/https.py", line 60, in open
    return  HttpTransport.open(self, request)
  File "/Library/Python/2.7/site-packages/suds/transport/http.py", line 64, in open
    raise TransportError(str(e), e.code, e.fp)
suds.transport.TransportError: HTTP Error 401: Unauthorized

我正在输入正确的登录信息,但我一直收到未经授权的错误。

这是我的代码:

class ConnectATWS():
    def __init__(self):
        app_config = Init()
        self.username = app_config.data["Username"]
        self.password = app_config.data["Password"]
        self.login_id = app_config.data["LoginID"]
        self.url = app_config.data["AutotaskUpdateTicketEstimatedHours_net_autotask_webservices5_ATWS"]

        client = Client(self.url)
        login_res = client.service.Login(self.login_id, self.password)

我没有正确使用 SUDS 吗?

像这样认证

    client = Client(self.url)
    login_res = client.service.Login(self.login_id, self.password)

仅当网络服务提供需要调用以进行身份​​验证的 Login(user, password) 方法时才有效。

在这种情况下,当您尝试访问服务 wsdl 时(在构建 Client 时),您已经收到 401 响应,这表明基于 http 响应使用了不同的身份验证方法可能是 http 基本身份验证。所以认证不是由服务完成的,而是在传输层。

要将 http basic auth 与 suds 一起使用很简单,只需将 usernamepassword 关键字参数传递给 Client:

client = Client(self.url, username=self.login_id, password=self.password)