我正在使用Pythonzeep发出SOAP请求。对于SSL验证,HostHeaderSSLAdapter被添加为我的URL https://dev_alias:8096/some_soap
,它包含一个别名,而不是实际的主机名。在
下面的代码使用requests
可以正常工作。所以我假设session
是正确的。在
import requests
from requests_toolbelt.adapters import host_header_ssl
from zeep.transports import Transport
from zeep import Client, Settings
url = 'https://dev_alias:8096/some_soap'
params = {'param1': 'value1'}
session = requests.Session()
session.verify = 'CertBundle.pem'
session.mount('https://', host_header_ssl.HostHeaderSSLAdapter())
headers = {'SOAPAction': '""', 'Content-Type': 'text/xml; charset=utf-8'}
message = b"<?xml version=\'1.0\' encoding=\'utf-8\'?>....</soap-env:Envelope>"
session.post(url, data=message, headers=headers)
但是,当相同的session
用于zeep的Transport
时,此代码将失败。在
如何使用zeep
关闭主机名验证?使用zeep版本3.4.0 0和请求2.22.0
出于测试目的,您可以禁用ssl验证,如下所述https://python-zeep.readthedocs.io/en/master/transport.html
在这种情况下,将
session.verify
行改为请注意,您几乎肯定不希望在生产系统中这样做。在
相关问题 更多 >
编程相关推荐