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
我通过搜索 wsdl
和 python
找到了它,理由是,您需要一个 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 时遇到了问题。原来这是一个已知的 Pythonurllib2
问题。有关详细信息,请参阅我的答案。
我尝试了 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 客户端库,它们的文档在哪里? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
哪些选项可用于使用 SOAP 在 Delphi 中实现长轮询?
python 有没有php里面的soapclient这样的东西
除了标准库中包含的工具之外,Linux 上的 Python 还存在哪些分析工具?