В настоящее время работает над использованием 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)'),))