Принуждение подготовленных запросов от HTTPS обратно к HTTP-клиенту Python Zeep (wsdl https, привязка должна быть http)

В настоящее время работаем над использованием zeep для привязки клиента к приложению, которое мы не контролируем (поэтому мы не можем изменить его поведение).

К сожалению для меня, WSDL размещен на странице https://, а сама привязка поддерживает ТОЛЬКО HTTP, поэтому я не могу просто изменить адрес привязки на HTTPS, чтобы это заработало.

При первом создании клиентского объекта zeep я предполагаю, что это подготовленный запрос python, который теперь вынужден принимать только SSL.

Вопрос: Есть ли способ сообщить запросам zeep или python, что следующий ответ не будет HTTPS?

Пример:

from requests import Session
from zeep import Client
from zeep.transports import Transport

import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

session = Session()
session.verify = False
transport = Transport(session=session)
client = Client('https://example.local:8443/www/core-service/services/LoginService?wsdl', transport=transport)

with client.settings(raw_response=True):
    print(client.service.login('0', 'user', 'password'))

Это вернет эту ошибку, потому что следующий вызов направлен на http-адрес:

requests.exceptions.SSLError: HTTPSConnectionPool(host='localhost', port=9090): Max retries exceeded with url: /core-service/services/LoginService (Caused by SSLError(SSLError(1, '[SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:877)'),))

person Marius    schedule 24.10.2019    source источник


Ответы (1)


Вы можете установить для свойства «force_https» значение false, чтобы избежать форсирования https.

https://python-zeep.readthedocs.io/en/master/settings.html#settings

person DucaDellaForcoletta    schedule 28.11.2019