我以前从未使用过肥皂,我对Python有点陌生。我这样做是为了让自己熟悉这两种技术。我已经安装了SOAPlib,我已经尝试阅读他们的客户端文档,但我不太理解它。是否还有其他更适合作为Python的SOAP客户端库的东西?
编辑:为了以防万一,我使用的是Python 2.6。
http://users.skynet.be/pascalbotte/rcx-ws-doc/python.htm#SOAPPY是否有帮助
我通过搜索wsdl和python找到了它,理性的是,你需要一个SOAP服务器的wsdl描述来做任何有用的客户端包装....
wsdl
python
我们使用了来自Python Web服务的SOAPpy,但似乎ZSI(同一来源)正在取代它。
我有很好的sudds经验 https://fedorahosted.org/suds < / p >
使用他们的TestSuite作为文档。
更新(2016):< em > < / em >
如果你只需要SOAP客户端,有一个维护良好的库,叫做zeep。它同时支持Python 2和Python 3:)
< em >更新:< / em >
除了上面提到的,我还将引用Python web服务页面,它始终是最新的,包含所有主动维护和推荐的肥皂和所有其他webservice类型的模块。
不幸的是,目前我不认为有一个“最好的”Python SOAP库。每一种主流方法都有其优缺点。
老库:
SOAPy:是“最好的”,但不再保持。在Python 2.5+上不工作
ZSI:使用起来非常痛苦,开发速度很慢。有一个名为“SOAPpy”的模块,它与上面的SOAPy不同。
“新”库:
SUDS:非常python化,很容易创建使用wsdl的SOAP客户端。创建SOAP服务器稍微有点困难。(此包不适用于Python3。对于Python3,请参阅sds -py3)
sds -py3: SUDS的Python3版本
spyne:创建服务器很容易,创建客户端有点挑战性。文档有些缺乏。
ladon:创建服务器很像在soapplib中(使用装饰器)。Ladon同时公开了比SOAP更多的接口,而不需要额外的用户代码。
pysimplesoap:非常轻量级,但对客户端和服务器都有用-包括web2py服务器集成,附带web2py。
以上,我个人只使用过SUDS,而且我非常喜欢它。
正如我所建议的在这里,我建议你自己卷。它实际上并没有那么难,我怀疑这就是没有更好的Python SOAP库的原因。
毫无疑问,sudds是正确的选择。
我遵循了这个问题的其他答案的建议,并尝试了肥皂水。在“愤怒地”使用它之后,我必须同意:SUDS非常好!强烈推荐!
我确实遇到了从代理后面调用基于http的web服务的麻烦。在撰写本文时,这将影响使用urllib2的所有 Python web服务客户端,因此我将在这里记录解决方案。
urllib2
python 2.6.2及以下版本附带的urllib2模块不会为http -over- http -代理会话向代理发出CONNECT。这会导致很长时间的超时,或者如果你幸运的话,会出现如下错误:
CONNECT
abort: error: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
这是Python错误跟踪器上的issue1424152。在Python 2中,bug报告附带的补丁将修复这个问题。3.x和Python 3.x。这个问题已经解决了。
SUDS易于使用,但不能保证可再入。如果您在线程应用程序中保留WSDL Client()对象以获得更好的性能,则会涉及一些风险。此风险的解决方案是clone()方法,它会抛出不可恢复的Python 5508错误,该错误似乎打印了异常,但并没有真正抛出异常。可能会让人困惑,但它很有效。它仍然是迄今为止最好的Python SOAP客户机。
我使用SOAPpy与Python 2.5.3在生产设置。
我不得不手动编辑SOAPpy中的几个文件(关于头代码在错误的地方),但除此之外,它工作并继续这样做非常可靠。
我们发布了一个新的库:PySimpleSOAP,它提供了对简单而实用的客户端/服务器的支持。它的目标是:易用性和灵活性(不需要类、自动生成代码或xml)、WSDL自省和生成、符合WS- i标准、兼容性(包括Java AXIS、. net和Jboss WS)。它被包含在Web2Py中,以支持全栈解决方案(补充其他支持的协议,如XML_RPC、JSON、AMF-RPC等)。
如果有人正在学习SOAP或想要研究它,我认为这是一个很好的开始。
我相信soapplib已经弃用了它的SOAP客户端('sender'),转而使用了suds。在这一点上,soapplib专注于成为一个与web框架无关的SOAP服务器(“接收器”)。目前,soapplib正在积极开发中,通常在Python SOAP邮件列表中讨论:
http://mail.python.org/mailman/listinfo/soap
在我的的结论中,我们有:
Soap客户端:
use 只有 Suds-jurko (2016年更新) Suds维护和更新良好
更新:06/2017 sds -jurko库未更新,显然放弃了,
我测试了zeep库,但得到了围绕令牌的限制,到目前为止只支持UsernameToken,我报告了一个错误来创建时间戳令牌,并作者更新代码来修复它。
Zeep开始良好,并有良好的文档,所以我最近将我的代码从suds迁移到Zeep,工作正常。
Soap服务器端:
我们有TGWS, soapplib (pysimplesoap未测试)IMHO使用和帮助soapplib必须是选择
最好的问候,
肥皂水很不错。我尝试了SOAPpy,但没有得到它的工作方式,我需要而肥皂水工作得很直接。
只是供大家参考的警告,在此问题解决之前,SUDS不支持WSDL中的“choice”标签:
https://fedorahosted.org/suds/ticket/342