首页 > 解决方案 > 无法在代理后面调用 SOAP 请求(不支持代理方案无)

问题描述

我无法使用 WinPython/VSCode 在 Windows Server 2016 环境中从简单的 Python 脚本调用 SOAP 请求:

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

wsdl = "http://www.dneonline.com/calculator.asmx?wsdl"
#wsdl = "calculator.xml"
client = Client(wsdl=wsdl)

request_data={'intA' : 1 ,
              'intB' : 2}
response=client.service.Add(**request_data)
print("response: " + response)

我得到的输出:

Traceback (most recent call last):
  File ".\zeeptest.py", line 31, in <module>
    client = Client(wsdl=wsdl)
  File "E:\Projects\test\zeeptest\zeeptest\lib\site-packages\zeep\client.py", line 73, in __init__
    self.wsdl = Document(wsdl, self.transport, settings=self.settings)
  File "E:\Projects\test\zeeptest\zeeptest\lib\site-packages\zeep\wsdl\wsdl.py", line 92, in __init__
    self.load(location)
  File "E:\Projects\test\zeeptest\zeeptest\lib\site-packages\zeep\wsdl\wsdl.py", line 95, in load
    document = self._get_xml_document(location)
  File "E:\Projects\test\zeeptest\zeeptest\lib\site-packages\zeep\wsdl\wsdl.py", line 155, in _get_xml_document
    return load_external(
  File "E:\Projects\test\zeeptest\zeeptest\lib\site-packages\zeep\loader.py", line 79, in load_external
    content = transport.load(url)
  File "E:\Projects\test\zeeptest\zeeptest\lib\site-packages\zeep\transports.py", line 122, in load
    content = self._load_remote_data(url)
  File "E:\Projects\test\zeeptest\zeeptest\lib\site-packages\zeep\transports.py", line 134, in _load_remote_data
    response = self.session.get(url, timeout=self.load_timeout)
  File "E:\Projects\test\zeeptest\zeeptest\lib\site-packages\requests\sessions.py", line 555, in get
    return self.request('GET', url, **kwargs)
  File "E:\Projects\test\zeeptest\zeeptest\lib\site-packages\requests\sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "E:\Projects\test\zeeptest\zeeptest\lib\site-packages\requests\sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "E:\Projects\test\zeeptest\zeeptest\lib\site-packages\requests\adapters.py", line 414, in send
    raise InvalidURL(e, request=request)
requests.exceptions.InvalidURL: Not supported proxy scheme None

我尝试使用以下命令手动设置代理但没有成功:

set http_proxy="http://<ip>:<port>"
set https_proxy="http://<ip>:<port>"

标签: pythonwindowszeep

解决方案


我通过以管理员用户身份在 Powershell shell 中发出以下命令解决了我的问题:

netsh winhttp set proxy <ip>:<port>

推荐阅读