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

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