Python soap客户端 - 连接有问题

问题描述 投票:0回答:1

我正在使用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:我无法共享我尝试连接的网站网址。

附加信息:站点/页面只能通过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',))

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

python soap-client zeep
1个回答
0
投票

这是做什么的:

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

是:

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

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

从你的追溯我们看到

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

这本来是类似的

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

即命令行和您的代码没有连接到同一个地址(另请注意,小于1024的端口值需要使用系统级权限 - 如果您正在编写/控制服务)。

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

Max retries exceeded with url: /ABC/XYZ/Logon.asmx

换句话说,你已经尝试过(并且失败了)多次登录,服务器可能会在每次尝试时将响应时间加倍(对于无法多次登录的“事物”,这是一个众所周知的缓解策略 - 即看起来像攻击)。延迟延迟很可能导致您在底部看到的错误消息。

您需要等待一段时间,或者重置您的服务帐户,如果服务是您的,那么可能在开发过程中关闭此功能?

© www.soinside.com 2019 - 2024. All rights reserved.