Python Web服务:尝试使用ZEEP SOAP客户端连接到WSDL端点提供了连接错误
问题描述:
的Python:2.7.6Python Web服务:尝试使用ZEEP SOAP客户端连接到WSDL端点提供了连接错误
ZEEP:1.1.0
我试图达到网络的WSDL端点服务网址。我目前正在使用zeep SOAP客户端,并且也尝试了suds(并得到了类似的结果)。当我从网络访问URL或发送curl请求时,我收到回复并可以看到这些服务。但是当我尝试从zeep(使用python -mzeep [url]命令)或suds(通过打印(客户端))访问它时,出现连接错误。
urllib2.URLError: <urlopen error [Errno -2] Name or service not known>
我粘贴了下面的完整错误。不幸的是,我无法在这里分享这个网址,所以我改变了我的帖子。
在我的代码,我有以下
from zeep import Client
endpoint_url = 'http://12.345.678.90:8080/PathGoesHere?wsdl'
client = Client(endpoint_url)
我也曾尝试以下
sudo python -mzeep http://12.345.678.90:8080/PathGoesHere?wsdl
错误:
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/usr/local/lib/python2.7/dist-packages/zeep/__main__.py", line 86, in <module>
main(args)
File "/usr/local/lib/python2.7/dist-packages/zeep/__main__.py", line 75, in main
client = Client(args.wsdl_file, transport=transport)
File "/usr/local/lib/python2.7/dist-packages/zeep/client.py", line 120, in __init__
self.wsdl = Document(wsdl, self.transport)
File "/usr/local/lib/python2.7/dist-packages/zeep/wsdl/wsdl.py", line 65, in __init__
root_definitions = Definition(self, document, self.location)
File "/usr/local/lib/python2.7/dist-packages/zeep/wsdl/wsdl.py", line 156, in __init__
self.parse_types(doc)
File "/usr/local/lib/python2.7/dist-packages/zeep/wsdl/wsdl.py", line 272, in parse_types
self.types.add_documents(schema_nodes, self.location)
File "/usr/local/lib/python2.7/dist-packages/zeep/xsd/schema.py", line 96, in add_documents
document = self.create_new_document(node, location)
File "/usr/local/lib/python2.7/dist-packages/zeep/xsd/schema.py", line 183, in create_new_document
schema.load(self, node)
File "/usr/local/lib/python2.7/dist-packages/zeep/xsd/schema.py", line 349, in load
visitor.visit_schema(node)
File "/usr/local/lib/python2.7/dist-packages/zeep/xsd/visitor.py", line 108, in visit_schema
self.process(node, parent=parent)
File "/usr/local/lib/python2.7/dist-packages/zeep/xsd/visitor.py", line 49, in process
result = visit_func(self, node, parent)
File "/usr/local/lib/python2.7/dist-packages/zeep/xsd/visitor.py", line 155, in visit_import
schema_node = load_external(location, self.schema._transport)
File "/usr/local/lib/python2.7/dist-packages/zeep/xsd/utils.py", line 59, in load_external
response = transport.load(url)
File "/usr/local/lib/python2.7/dist-packages/zeep/transports.py", line 111, in load
content = self._load_remote_data(url)
File "/usr/local/lib/python2.7/dist-packages/zeep/transports.py", line 126, in _load_remote_data
response = self.session.get(url, timeout=self.load_timeout)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 501, in get
return self.request('GET', url, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 488, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 609, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 487, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='host.goes.here', port=8080): Max retries exceeded with url: /PathGoesHere?xsd=xsd0 (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7fbf2c442390>: Failed to establish a new connection: [Errno -2] Name or service not known',))
我不知道为什么它的工作原理,通过浏览器/ curl而不是python SOAP客户端。有没有什么我应该改变我的端点URL,比如稍后设置端口?我试过用肥皂水,它给了我一个404错误,因为一个无效的URL。我应该如何解决这个问题/我还能尝试什么?
在此先感谢!
答
首先想到的是,你在防火墙后面吗?这不是有线错误,只是因为URL不可访问。
对于大多数公司环境,您可以通过浏览器访问URL,但不能从命令行(或Python库)访问它。原因是,公司政策已应用于您的计算机,并且浏览器使用代理脚本(pac)文件来确定要使用哪个代理。
如果你可以分享你是如何测试网址的,这将是非常有用的。
您可以简单地使用命令ping
来测试该URL是否可访问。
答
在我的情况似乎从
http://12.345.678.90:8080/PathGoesHere?wsdl
改变我的网址端点
http://12.345.678.90:8080/PathGoesHere?singleWsdl
的伎俩
我也ping通的IP'平12.345.678.90',并得到了回应 – bbakp3
对不起,我的意思是说 我测试的URL的方式是:1.访问本地浏览器的网址(作品) 2.从我的虚拟主机发送curl请求到URL(作品) 3.对于suds: client = Client(http://12.345.678.90:8080/PathGoesHere?wsdl,cachingpolicy = 1) print(client )' (不起作用) 4.对于zeep: 'sudo python -mzeep http://12.345.678.90:8080/PathGoesHere?wsdl' (不起作用) – bbakp3
运行服务提供商的盒子已关闭防火墙 – bbakp3