Python 存在哪些 SOAP 客户端库,它们的文档在哪里? [关闭]

Posted

技术标签:

【中文标题】Python 存在哪些 SOAP 客户端库,它们的文档在哪里? [关闭]【英文标题】:What SOAP client libraries exist for Python, and where is the documentation for them? [closed] 【发布时间】:2010-09-17 09:29:53 【问题描述】:

我以前从未使用过SOAP,而且我对 Python 有点陌生。我这样做是为了让自己熟悉这两种技术。我已经安装了SOAPlib 并尝试阅读他们的Client 文档,但我不太了解它。还有什么我可以研究的更适合作为 Python 的 SOAP 客户端库的吗?

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

【问题讨论】:

是否必须是 SOAP,例如使用预先存在的 Web 服务? Python 的 xmlrpclib 使用起来非常简单,我已经使用它将我们的 SOAP 服务迁移到 XMLRPC。 有时只想连接到仅通过 SOAP 提供的服务,所以是的 - 好的 python SOAP lib 迟早会需要。没有任何机会说服服务提供商用“更清洁”的东西代替 SOAP... 谁能提供 2011 年的相关更新?显然没有人可以再问这个问题了。 仅供参考:我打开了一篇类似的帖子,针对 Python 3 的 SOAP:***.com/questions/7817303/… 任何访问此问题的人,投票重新打开它,以便信息可以保持最新/可以发布新答案。 【参考方案1】:

可以帮忙吗:http://users.skynet.be/pascalbotte/rcx-ws-doc/python.htm#SOAPPY

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

【讨论】:

【参考方案2】:

我们使用了来自 Python Web Services 的 SOAPpy,但似乎 ZSI(相同来源)正在取代它。

【讨论】:

【参考方案3】:

我对 SUDS 有很好的体验 https://fedorahosted.org/suds

使用他们的 TestSuite 作为文档。

【讨论】:

SUDS 太棒了!真的很容易使用,很好的文档,很棒的东西! 已维护,python3 支持 fork:suds-jurko。 pip install suds-jurko 我正在尝试使用 suds 调用 async soap api,运行良好但没有得到任何响应,有人可以帮忙吗,hr 我的问题:***.com/questions/39227719/…【参考方案4】:

更新(2016 年):

如果您只需要 SOAP 客户端,则有一个维护良好的库,称为 zeep。它同时支持 Python 2 和 3 :)


更新:

除了上面提到的内容,我将参考Python WebServices 页面,该页面始终是最新的,所有积极维护和推荐的模块都适用于 SOAP 和所有其他 web 服务类型。


不幸的是,目前,我认为没有“最好的”Python SOAP 库。每个可用的主流都有自己的优点和缺点。

旧图书馆:

SOAPy:曾经是“最好的”,但不再维护。不适用于 Python 2.5+

ZSI:用起来很痛苦,开发也很慢。有一个名为“SOAPpy”的模块,它不同于 SOAPy(上图)。

“较新”的库:

SUDS:非常 Pythonic,易于创建使用 WSDL 的 SOAP 客户端。创建 SOAP 服务器有点困难。 (此包不适用于 Python3。对于 Python3,请参阅 SUDS-py3)

SUDS-py3:SUDS 的 Python3 版本

spyne:创建服务器很容易,创建客户端则更具挑战性。文档有些缺乏。

ladon:创建服务器很像在soaplib 中(使用装饰器)。 Ladon 可以同时公开比 SOAP 更多的接口,而无需额外的用户代码。

pysimplesoap:非常轻量级,但对客户端和服务器都很有用 - 包括 web2py 附带的 web2py 服务器集成。

SOAPpy:与上面 ZSI 链接中托管的废弃 SOAPpy 不同,这个版本实际上一直维护到 2011 年,现在它似乎也被废弃了。 soaplib:易于使用的python 库,用于编写和调用soap web 服务。使用soaplib 编写的Web 服务简单、轻量级,可与其他SOAP 实现很好地配合使用,并且可以部署为WSGI 应用程序。 osa:一个快速/纤薄且易于使用的 SOAP python 客户端库。

以上,我个人只用过SUDS,非常喜欢。

【讨论】:

SOAPy 和 SOAPpy 实际上是不同的。我已经编辑澄清,并将帖子变成了社区维基。 SUDS+1,很棒的图书馆!我在代理后面使用带有 HTTPS Web 服务的 SUDS 时遇到了问题。原来这是一个已知的 Python urllib2 问题。有关详细信息,请参阅我的答案。 我尝试了 SUD,但是在打开 WSDL 时它进入了无限循环;然后python抛出了递归限制错误。我发现了这张关于这个问题的公开票:fedorahosted.org/suds/ticket/239 显然这是 3 年前的图书馆破坏错误,至今仍未修复。 在bitbucket.org/jurko/suds有一个维护的SUDS分支 我今天开始使用 SUDS 仅用于获取数据。它在soap头中处理了一个基本的apikey auth,没有任何问题,并且响应相当容易解析。文档也很不错。【参考方案5】:

正如我建议的here 我建议你自己动手。这实际上并不难,我怀疑这就是没有更好的 Python SOAP 库的原因。

【讨论】:

【参考方案6】:

SUDS 是必经之路,毫无疑问。

【讨论】:

而且它在大量的 WSDL 文件上也失败了。为了支持这一说法——例如 Bing 地图 API,其中一些失败并且 suds 无法解析它们。 我发现 SUDS 支持 SSL 端点。【参考方案7】:

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

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

urllib2 与 python 2.6.2 及更低版本一起提供的模块不会向 HTTPS-over-HTTP-proxy 会话的代理发出 CONNECT。这会导致长时间超时,或者如果幸运的话,会出现如下错误:

abort: error: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol

这是 Python 错误跟踪器上的 issue1424152。错误报告附带了一些补丁,这些补丁将在 Python 2.x 和 Python 3.x 中修复此问题。 问题已解决

【讨论】:

刚刚安装它,尽管我对 Python 完全陌生,但它感觉非常直观,我可以在几分钟内发送 SUDS 请求。图书馆很棒! 你介意更新这个吗?我问是因为我点击了链接,并且错误已修复。 可惜它似乎不再被维护了 Fore us suds 也很好用。但是它很慢。检索一个xmlsoap文件需要0.5秒,在双核机器上处理需要5秒! @paulm:试试bitbucket.org/jurko/suds【参考方案8】:

SUDS 易于使用,但不保证可重入。如果您将 WSDL Client() 对象保留在线程应用程序中以获得更好的性能,则存在一些风险。该风险的解决方案是 clone() 方法,它会引发不可恢复的 Python 5508 错误,该错误似乎可以打印但实际上并没有引发异常。可能会令人困惑,但它确实有效。它仍然是迄今为止最好的 Python SOAP 客户端。

【讨论】:

【参考方案9】:

我在生产环境中使用 SOAPpy 和 Python 2.5.3。

我不得不在 SOAPpy 中手动编辑几个文件(一些关于标头代码在错误位置的问题),但除此之外它可以正常工作,并且继续非常可靠地这样做。

【讨论】:

我们也做了同样的事情,并且在 Python 2.6.3 中使用了 SOAPpy。【参考方案10】:

我们发布了一个新库:PySimpleSOAP,它为简单而实用的客户端/服务器提供支持。它的目标是:易用性和灵活性(不需要类、自动生成的代码或 xml)、WSDL 内省和生成、WS-I 标准合规性、兼容性(包括 Java AXIS、.NET 和 Jboss WS)。它包含在 Web2Py 中以启用全栈解决方案(补充其他支持的协议,如 XML_RPC、JSON、AMF-RPC 等)。

如果有人正在学习 SOAP 或想研究它,我认为这是一个不错的选择。

【讨论】:

【参考方案11】:

我相信soaplib 已经弃用了它的SOAP 客户端('sender'),转而使用suds。在这一点上,soaplib 专注于成为一个与 Web 框架无关的 SOAP 服务器(“接收器”)。目前,soaplib 正在积极开发中,通常在 Python SOAP 邮件列表中讨论:

http://mail.python.org/mailman/listinfo/soap

【讨论】:

【参考方案12】:

我的结论中,我们有这个:

肥皂客户端:

仅使用 Suds-jurko (2016 年更新) suds 得到了很好的维护和更新。

更新 06/2017: suds-jurko 库未更新,apparently abandoned,

我测试了 zeep 库,但在令牌方面受到限制,现在只支持 UsernameToken,我报告了一个 bug 来创建时间戳令牌并作者更新代码来修复它。

Zeep 开始不错,documentation 也很好,所以我最近将我的代码从 suds 迁移到 zeep 并且工作正常。

Soap 服务器端:

我们有 TGWS、soaplib(pysimplesoap 未测试)恕我直言,必须选择使用和帮助soaplib。

最好的问候,

【讨论】:

Suds-jurko 是否有好的文档/样本?在 repo 中有一些 .rst 文件,但没有太多关于如何使用该库的文档。【参考方案13】:

泡沫很好。我尝试了 SOAPpy,但没有让它以我需要的方式工作,而 suds 几乎可以立即工作。

【讨论】:

【参考方案14】:

对于查看 SUDS 的人来说只是一个仅供参考的警告,在解决此问题之前,SUDS 不支持 WSDL 中的“选择”标签:

https://fedorahosted.org/suds/ticket/342

见: suds and choice tag

【讨论】:

以上是关于Python 存在哪些 SOAP 客户端库,它们的文档在哪里? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在python中调用没有WSDL的soap API

哪些选项可用于使用 SOAP 在 Delphi 中实现长轮询?

python 有没有php里面的soapclient这样的东西

除了标准库中包含的工具之外,Linux 上的 Python 还存在哪些分析工具?

当 XML SOAP 响应中存在单个元素时,JSON 对象而不是数组

[TimLinux] Python3 Coverity zeep/SOAP 库使用示例