我以前从未使用过SOAP,而且对Python还是有点陌生。我这样做是为了使自己熟悉这两种技术。我已经安装了SOAPlib,并尝试阅读其Client文档,但是我不太了解它。我还有什么可以寻找的更适合用作Python的SOAP客户端库的东西吗?
编辑:以防万一,我正在使用Python 2.6。
我以前从未使用过SOAP,而且对Python还是有点陌生。我这样做是为了使自己熟悉这两种技术。我已经安装了SOAPlib,并尝试阅读其Client文档,但是我不太了解它。我还有什么可以寻找的更适合用作Python的SOAP客户端库的东西吗?
编辑:以防万一,我正在使用Python 2.6。
Answers:
更新(2016):
如果只需要SOAP客户端,则有一个维护良好的库,称为zeep。它同时支持Python 2和3 :)
更新:
除了上面提到的内容外,我还将参考Python WebServices页面,该页面始终是最新的,其中包含针对SOAP和所有其他Webservice类型的所有主动维护和推荐的模块。
不幸的是,目前,我认为没有“最好的” Python SOAP库。每种主流产品都有其优点和缺点。
较旧的库:
“较新的”库:
SUDS:非常Pythonic,易于创建消耗WSDL的SOAP客户端。创建SOAP服务器要困难一些。(此软件包不适用于Python3。有关Python3,请参见SUDS-py3)
spyne:创建服务器很容易,创建客户端要困难一些。缺少文档。
ladon:创建服务器非常类似于soaplib(使用装饰器)。Ladon同时公开了比SOAP更多的接口,而无需额外的用户代码。
pysimplesoap:非常轻巧,但对客户端和服务器均有用-包括web2py附带的web2py服务器集成。
其中,我只是个人使用SUDS,我非常喜欢它。
urllib2
问题。请参阅我的答案以获取更多详细信息。
我遵循了对该问题的其他答案的建议,并尝试了SUDS。在“愤怒”使用它之后,我必须同意:SUDS非常好!强烈推荐!
我确实从代理后面调用基于HTTPS的Web服务时遇到麻烦。在撰写本文时,这会影响所有使用的 Python Web服务客户端urllib2
,因此我将在此处记录该解决方案。
urllib2
python 2.6.2及更低版本附带的模块不会CONNECT
向HTTPS-over-HTTP-proxy会话的代理发出。这将导致超时,或者如果您幸运的话,将出现以下错误:
abort: error: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
这是Python错误跟踪器上的issue1424152。错误报告附带有补丁程序,可在Python 2.x和Python 3.x中修复此问题。这个问题已经解决。
我对SUDS https://fedorahosted.org/suds有很好的经验
使用他们的TestSuite作为文档。
pip install suds-jurko
只是针对查看SUDS的人员提供的FYI警告,在此票证解决之前,SUDS不支持WSDL中的“ choice”标签:
https://fedorahosted.org/suds/ticket/342
请参阅: 泡沫和选择标签
SUDS易于使用,但不能保证可以重入。如果您将WSDL Client()对象保留在线程应用程序中以获得更好的性能,则存在一定的风险。解决此风险的方法clone()方法会引发不可恢复的Python 5508错误,该错误似乎可以打印,但并没有真正引发异常。可能会造成混淆,但是可以。到目前为止,它仍然是最好的Python SOAP客户端。
我们发布了一个新的库:PySimpleSOAP,它为简单而功能强大的客户端/服务器提供支持。它的目标是:易用性和灵活性(不需要类,不需要自动生成的代码或xml),WSDL内省和生成,符合WS-I标准,兼容性(包括Java AXIS,.NET和Jboss WS)。它包含在Web2Py中以启用全栈解决方案(补充其他受支持的协议,例如XML_RPC,JSON,AMF-RPC等)。
如果有人正在学习SOAP或想对其进行调查,那么我认为这是一个不错的选择。
我相信soaplib已弃用其SOAP客户端(“发送者”),而改为使用肥皂水。在这一点上,soaplib致力于成为一个与Web框架无关的SOAP服务器(“接收器”)。当前soaplib正在积极开发中,通常在Python SOAP邮件列表中进行讨论:
在我的结论,我们有这样的:
肥皂客户端:
仅 使用Suds-jurko (2016年更新)
可以很好地维护和更新泡沫。
更新06/2017:suds -jurko库未更新,显然已被放弃,
我测试ZEEP库,但得到周围令牌的限制,现在只支持用户名令牌,我报告一个错误创建时间戳标记和作者更新的代码来修复它。
Zeep的启动良好,并且具有良好的文档,因此我最近将代码从suds迁移到了zeep,并且运行良好。
肥皂服务器端:
我们有TGWS,soaplib(未经测试的pysimplesoap)恕我直言使用,并且必须选择soaplib帮助。
最好的祝福,
泡沫非常好。我尝试了SOAPpy,但没有按照我需要的方式正常工作,而肥皂水却很快就起作用了。
能否提供帮助:http : //users.skynet.be/pascalbotte/rcx-ws-doc/python.htm#SOAPPY
我通过搜索wsdl
and来找到它,python
从本质上讲,您将需要对SOAP服务器进行wsdl描述才能进行任何有用的客户端包装...。
我们使用了Python Web Services的 SOAPpy ,但似乎ZSI(相同的源)正在取代它。