Python Soap客户端-连接出现问题

时间:2018-08-30 11:40:24

标签: python soap-client zeep

我正在使用Python soap API客户端Zeep,这是我编写的代码:

from zeep import Client

def myapi(request):
    client = Client("https://siteURL.asmx?wsdl")
    key = client.service.LogOnUser('myusername', 'mypassord')
    print(key)

它给我一个错误,例如:[WinError 10060]连接尝试失败,因为一段时间后连接方未正确响应,或者由于连接的主机未能响应而建立连接失败

虽然我在下面的命令中尝试使用该URL,但它可以很好地显示其具有的所有服务

python -mzeep https://siteURL.asmx?wsdl

请帮助您了解以上代码无法正常工作的原因。

PS:我无法共享我要连接的站点URL。

其他信息:网站/页面只能通过Intranet访问,而我正在从Intranet本身进行本地测试。

跟踪错误:

Exception Type: ConnectionError at /music/mypersonalapi/
Exception Value: HTTPSConnectionPool(host='URL I have hidden', port=81): 
Max retries exceeded with url: /ABC/XYZ/Logon.asmx
(Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x0546E770>: 
Failed to establish a new connection:
[WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond',))

请注意:由于机密性,我已从追溯中删除URL和主机信息

1 个答案:

答案 0 :(得分:0)

这是什么:

am

是:

python -mzeep https://site/url.asmx?wsdl

这两种方法都使用端口443,因为这是默认的https端口。

从您的追溯中我们看到

c = Client("https://site/url.asmx?wsdl")
c.wsdl.dump()

相似
Exception Value: HTTPSConnectionPool(host='URL I have hidden', port=81): 

即命令行和您的代码未连接到相同的地址(还请注意,小于1024的端口值需要使用系统级权限,以防您也正在编写​​/控制服务)。

最后一行确实说“ ..失败,因为关联方在一段时间后未正确响应..”,但这不是根本原因。在第3行中,您可以阅读

python -mzeep https://site:81/url.asmx?wsdl

换句话说,您尝试(但失败)登录了太多次,并且服务器每次尝试响应的时间可能加倍(众所周知的缓解策略是“失败”多次登录-即看起来像攻击)。延长的延迟很可能会导致您在底部看到错误消息。

您需要等待一会儿,或者重置该服务的帐户,如果该服务是您的服务,那么也许在开发过程中将其关闭?