首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >禁止来自http://schemas.xmlsoap.org/soap/encoding/的url错误

禁止来自http://schemas.xmlsoap.org/soap/encoding/的url错误
EN

Stack Overflow用户
提问于 2022-04-19 03:16:45
回答 1查看 184关注 0票数 0

当我使用zeep的时候,我会得到这个“禁止的url”错误。有人知道根本原因是什么吗?我尝试从zeep的客户端对象中使用一些选项,但没有结果。或者我的WSDL文件有问题吗?奇怪的是,这段代码在几个月前曾经运行良好,然后突然开始得到这个错误。

这是从错误返回的跟踪:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "/usr/src/app/attpcdaq/daq/tasks.py", line 33, in eccserver_refresh_state_task
    ecc_server.refresh_state()
  File "/usr/src/app/attpcdaq/daq/models.py", line 428, in refresh_state
    client = self._get_soap_client()
  File "/usr/src/app/attpcdaq/daq/models.py", line 308, in _get_soap_client
    return EccClient(self.ecc_url)
  File "/usr/src/app/attpcdaq/daq/models.py", line 65, in __init__
    client = SoapClient(wsdl_url)  # Loads the service definition from ecc.wsdl
  File "/usr/local/lib/python3.7/site-packages/zeep/client.py", line 73, in __init__
    self.wsdl = Document(wsdl, self.transport, settings=self.settings)
  File "/usr/local/lib/python3.7/site-packages/zeep/wsdl/wsdl.py", line 92, in __init__
    self.load(location)
  File "/usr/local/lib/python3.7/site-packages/zeep/wsdl/wsdl.py", line 97, in load
    root_definitions = Definition(self, document, self.location)
  File "/usr/local/lib/python3.7/site-packages/zeep/wsdl/wsdl.py", line 193, in __init__
    self._load(doc)
  File "/usr/local/lib/python3.7/site-packages/zeep/wsdl/wsdl.py", line 198, in _load
    self.parse_types(doc)
  File "/usr/local/lib/python3.7/site-packages/zeep/wsdl/wsdl.py", line 330, in parse_types
    self.types.add_documents(schema_nodes, self.location)
  File "/usr/local/lib/python3.7/site-packages/zeep/xsd/schema.py", line 111, in add_documents
    document = self.create_new_document(node, location)
  File "/usr/local/lib/python3.7/site-packages/zeep/xsd/schema.py", line 195, in create_new_document
    schema.load(self, node)
  File "/usr/local/lib/python3.7/site-packages/zeep/xsd/schema.py", line 421, in load
    visitor.visit_schema(node)
  File "/usr/local/lib/python3.7/site-packages/zeep/xsd/visitor.py", line 165, in visit_schema
    self.process(child, parent=node)
  File "/usr/local/lib/python3.7/site-packages/zeep/xsd/visitor.py", line 93, in process
    result = visit_func(self, node, parent)
  File "/usr/local/lib/python3.7/site-packages/zeep/xsd/visitor.py", line 238, in visit_import
    schema_node = self._retrieve_data(location, base_url=self.document._location)
  File "/usr/local/lib/python3.7/site-packages/zeep/xsd/visitor.py", line 1199, in _retrieve_data
    url, self.schema._transport, base_url, settings=self.schema.settings
  File "/usr/local/lib/python3.7/site-packages/zeep/loader.py", line 87, in load_external
    content = transport.load(url)
  File "/usr/local/lib/python3.7/site-packages/zeep/transports.py", line 122, in load
    content = self._load_remote_data(url)
  File "/usr/local/lib/python3.7/site-packages/zeep/transports.py", line 135, in _load_remote_data
    response.raise_for_status()
  File "/usr/local/lib/python3.7/site-packages/requests/models.py", line 960, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://schemas.xmlsoap.org/soap/encoding/
EN

回答 1

Stack Overflow用户

发布于 2022-07-22 13:07:42

您需要通过启用传输缓存来缓存WSDL:

代码语言:javascript
运行
复制
from zeep.cache import InMemoryCache

Client(soap_url, transport=Transport(
  cache=InMemoryCache(),
))

正式文件建议使用SqliteCache而不是InMemoryCache

代码语言:javascript
运行
复制
from zeep import Client
from zeep.cache import SqliteCache
from zeep.transports import Transport

transport = Transport(cache=SqliteCache())
client = Client(
    'http://www.webservicex.net/ConvertSpeed.asmx?WSDL',
    transport=transport)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71919280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档