ChatGPT解决这个技术问题 Extra ChatGPT

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

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、参考资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您认为此问题可以改进并可能重新打开,请访问帮助中心获取指导。 10年前关闭。社区在 4 个月前审查了是否重新打开此问题并将其关闭:原始关闭原因未解决

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

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

是否必须是 SOAP,例如使用预先存在的 Web 服务? Python 的 xmlrpclib 使用起来非常简单,我已经使用它将我们的 SOAP 服务迁移到了 XMLRPC。
有时,人们只想连接到仅通过 SOAP 提供的服务,所以是的 - 好的 python SOAP 库是人们迟早需要的东西。没有任何机会说服服务提供商用“更清洁”的东西代替 SOAP……
仅供参考:我打开了一篇针对 Python 3 的 SOAP 的类似帖子:stackoverflow.com/questions/7817303/…
查看 Python Wiki 以获取最新信息:wiki.python.org/moin/WebServices

1
18 revs, 16 users 27%

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

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

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

python 2.6.2 及更低版本附带的 urllib2 模块不会向 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
R
Rajesh

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

使用他们的 TestSuite 作为文档。


SUDS 太棒了!真的很容易使用,好的文档,很棒的东西!
维护,python3 支持 fork:suds-jurkopip install suds-jurko
我正在尝试使用 suds 调用 async soap api,运行良好但没有得到任何响应,有人可以帮忙吗,hr 我的 Q.:stackoverflow.com/questions/39227719/…
P
Peter Mortensen

SUDS 是要走的路,毫无疑问。


而且它在大量 WSDL 文件上也失败了。为了支持这一说法——例如,必应地图 API,其中一些失败并且 suds 无法解析它们。
我发现 SUDS 支持 SSL 端点。
C
Community

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

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

见:suds and choice tag


佚名

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


r
reingart

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

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


b
bradallen137

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

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


C
Cristian Salamea

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

肥皂客户端:

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

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

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

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

肥皂服务器端:

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

此致,


Suds-jurko 有好的文档/样本吗?在 repo 中有一些 .rst 文件,但没有太多关于如何使用该库的文档。
C
Community

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


P
Pratik Patel

肥皂水很不错。我尝试了 SOAPpy,但没有让它以我需要的方式工作,而 suds 几乎可以立即工作。


D
Daren Thomas

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

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


K
Kirk Strauser

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


c
carl

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

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


我们做了同样的事情,并且在 Python 2.6.3 中使用了 SOAPpy。