在python3中使用suds-py3 SOAP客户端的错误“ suds.transport.TransportError:HTTP错误401:未经授权”

问题描述

尝试使用suds和ewsclient在python 3中编写客户端以连接到Exchange Web服务。我已经使用以下CURL命令检查了与WSDL URL的连接:

curl -u username:password -L https://exchange_server/EWS/Services.wsdl -H "Content-Type:text/xml" --ntlm

我使用上面的命令返回了WSDL xml模式。

我的客户代码是:

def test_client():
    #variables defined,can't disclose
    transport = WindowsHttpAuthenticated(username=username,password=password)
    cred_str = ('%s:%s' % (username,password)).replace('\n','')
    base64string = str(base64.b64encode(bytes(cred_str,'utf-8')))
    authenticationHeader = {"SOAPAction" : "ActionName","Authorization" : "%s" % base64string}
    client = suds.client.Client(url=wsdl_url,transport=transport,headers=authenticationHeader,plugins=[ewsclient.AddService()])

    return client

print(test_client())

但是我得到这个错误:

raise TransportError(str(e),e.code,e.fp)
suds.transport.TransportError: HTTP Error 401: Unauthorized

我已经遇到了类似的问题,但是并没有完全解决我的问题:

Python SOAP client,WSDL call with suds gives Transport Error 401 Unauthorized for HTTP basic authentication

有人可以告诉我我做错了什么吗?用户名/密码和服务器详细信息正确时,为什么会显示授权错误?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...