Мыльный клиент Python - проблема с подключением - PullRequest
0 голосов
/ 30 августа 2018

Я использую Python мыло 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 сайта, к которому пытаюсь подключиться.

Дополнительная информация: Сайт / страница доступны только через интрасеть, и я тестирую локально из самой интрасети.

Ошибка трассировки:

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 голосов
/ 31 августа 2018

Что это делает:

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

другими словами, вы пытались (и не смогли) войти в систему слишком много раз, и сервер, вероятно, удваивает время, которое он использует для ответа каждый раз, когда вы пытаетесь (хорошо известная стратегия смягчения для «вещей», которые не в состоянии войти в систему несколько раз - т.е. выглядеть как атака). Расширенная задержка, скорее всего, вызывает сообщение об ошибке, которое вы видите внизу.

Вам нужно будет подождать некоторое время или сбросить свою учетную запись для службы, и, если служба принадлежит вам, возможно, отключить эту функцию во время разработки?

...