Python 有哪些 SOAP 客户端库?它们的文档在哪里?[关闭]
- 2025-01-20 09:07:00
- admin 原创
- 86
问题描述:
我以前从未使用过SOAP,而且对 Python 也比较陌生。我这样做是为了熟悉这两种技术。我已经安装了SOAPlib,并尝试阅读其客户端文档,但我对其了解不多。还有什么更适合用作 Python 的 SOAP 客户端库的吗?
编辑:为了以防万一有帮助,我正在使用 Python 2.6。
解决方案 1:
更新(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,而且我非常喜欢它。
解决方案 2:
我听从了这个问题其他答案的建议,尝试了SUDS。在“愤怒地”使用它之后,我必须同意:SUDS 非常好!强烈推荐!
我确实在通过代理调用基于 HTTPS 的 Web 服务时遇到了麻烦。在撰写本文时,这会影响所有使用 的 Python Web 服务客户端urllib2
,因此我将在此记录解决方案。
python 2.6.2 及以下版本附带的模块urllib2
不会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 中修复此问题。此问题已修复。
解决方案 3:
我对 SUDS 有很好的体验
https://fedorahosted.org/suds
使用他们的 TestSuite 作为文档。
解决方案 4:
毫无疑问,SUDS 是正确的选择。
解决方案 5:
对于查看 SUDS 的人来说,这只是一个仅供参考的警告,在解决此问题之前,SUDS 不支持 WSDL 中的“选择”标签:
https://fedorahosted.org/suds/ticket/342
参见:
泡沫和选择标签
解决方案 6:
SUDS 易于使用,但不能保证可重入。如果您在线程应用程序中保留 WSDL Client() 对象以获得更好的性能,则存在一些风险。解决此风险的方法是 clone() 方法,它会引发不可恢复的 Python 5508 错误,该错误似乎会打印但实际上不会引发异常。可能会令人困惑,但它确实有效。它仍然是迄今为止最好的 Python SOAP 客户端。
解决方案 7:
我们发布了一个新库:PySimpleSOAP,它为简单且实用的客户端/服务器提供支持。它的目标是:易用性和灵活性(不需要类、自动生成的代码或 xml)、WSDL 自检和生成、符合 WS-I 标准、兼容性(包括 Java AXIS、.NET 和 Jboss WS)。它包含在 Web2Py 中以启用全栈解决方案(补充其他受支持的协议,如 XML_RPC、JSON、AMF-RPC 等)。
如果有人正在学习 SOAP 或者想要研究它,我认为这是一个不错的入门选择。
解决方案 8:
我认为 soaplib 已弃用其 SOAP 客户端(“发送方”)而改用 suds。目前 soaplib 专注于成为与 Web 框架无关的 SOAP 服务器(“接收方”)。目前 soaplib 正在积极开发中,通常在 Python SOAP 邮件列表中讨论:
http://mail.python.org/mailman/listinfo/soap
解决方案 9:
我的结论是:
Soap 客户端:
仅 使用Suds-jurko (2016年更新)
suds 维护良好且更新。
更新 06/2017: suds-jurko 库未更新,显然已被废弃,
我测试了zeep库,但在令牌方面存在限制,现在仅支持 UsernameToken,我报告了创建时间戳令牌的错误,作者更新了代码来修复它。
Zeep 启动良好,并具有良好的文档,因此我最近将我的代码从 suds 迁移到 zeep 并且运行良好。
Soap服务器端:
我们有 TGWS,soaplib(pysimplesoap 未经测试)恕我直言,使用和帮助 soaplib 必须是选择。
此致,
解决方案 10:
正如我在这里建议的那样,我建议您自己动手。其实这并不难,我怀疑这就是没有更好的 Python SOAP 库的原因。
解决方案 11:
suds 相当不错。我尝试过 SOAPpy,但无法按照我需要的方式工作,而 suds 几乎立即就起作用了。
解决方案 12:
这有帮助吗: http: //users.skynet.be/pascalbotte/rcx-ws-doc/python.htm#SOAPPY
我通过搜索wsdl
和找到了它python
,合理的是,您需要一个 SOAP 服务器的 wsdl 描述才能执行任何有用的客户端包装器......
解决方案 13:
我们曾使用过Python Web Services中的 SOAPpy ,但似乎 ZSI(同一来源)正在取代它。
解决方案 14:
我在生产设置中使用带有 Python 2.5.3 的 SOAPpy。
我不得不手动编辑 SOAPpy 中的几个文件(因为标头代码放错了位置),但除此之外,它可以正常工作并且继续非常可靠地运行。