Python有哪些SOAP客户端库,它们的文档在哪里?

我以前从未使用过肥皂,我对Python有点陌生。我这样做是为了让自己熟悉这两种技术。我已经安装了SOAPlib,我已经尝试阅读他们的客户端文档,但我不太理解它。是否还有其他更适合作为Python的SOAP客户端库的东西?

编辑:为了以防万一,我使用的是Python 2.6。

250825 次浏览

http://users.skynet.be/pascalbotte/rcx-ws-doc/python.htm#SOAPPY是否有帮助

我通过搜索wsdlpython找到了它,理性的是,你需要一个SOAP服务器的wsdl描述来做任何有用的客户端包装....

我们使用了来自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。

  • SOAPpy:与上面ZSI链接托管的废弃SOAPpy不同,这个版本实际上一直维护到2011年,现在它似乎也被抛弃了。
  • soaplib:易于使用的python库,用于编写和调用soap web服务。用soapplib编写的web服务简单、轻量级,可以与其他SOAP实现很好地协同工作,并且可以作为WSGI应用程序部署。
  • 阻塞性睡眠呼吸暂停综合症:一个快速/精简易于使用的SOAP python客户端库。

以上,我个人只使用过SUDS,而且我非常喜欢它。

正如我所建议的在这里,我建议你自己卷。它实际上并没有那么难,我怀疑这就是没有更好的Python SOAP库的原因。

毫无疑问,sudds是正确的选择。

我遵循了这个问题的其他答案的建议,并尝试了肥皂水。在“愤怒地”使用它之后,我必须同意:SUDS非常好!强烈推荐!

我确实遇到了从代理后面调用基于http的web服务的麻烦。在撰写本文时,这将影响使用urllib2所有 Python web服务客户端,因此我将在这里记录解决方案。

python 2.6.2及以下版本附带的urllib2模块不会为http -over- http -代理会话向代理发出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

< p >看: 肥皂水和选择标签 < / p >