从HTTPS强制将准备好的请求返回给HTTP Python Zeep客户端(wsdl https,绑定必须为http)

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

当前正在使用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)'),))
python soap-client zeep
1个回答
0
投票

您可以将“ force_https”属性设置为false,以避免强制使用https。

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

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