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

346 投票
14 回答
256884 浏览
提问于 2025-04-11 09:35

我之前从来没用过SOAP,而且我对Python也还比较陌生。我这样做是为了熟悉这两种技术。我安装了SOAPlib,并试着阅读他们的客户端文档,但我不是很理解。有没有其他的东西可以让我看看,更适合用作Python的SOAP客户端库呢?

补充一下:如果有帮助的话,我使用的是Python 2.6。

14 个回答

19

我对SUDS的使用体验很好。你可以在这里找到它

我把他们的测试套件当作文档来用。

48

我按照其他回答的建议,试用了SUDS。在实际使用后,我必须同意:SUDS真的很好!非常推荐!

不过,我在通过代理调用基于HTTPS的网络服务时遇到了一些麻烦。写这段话的时候,这个问题影响到了所有使用urllib2的Python网络服务客户端,所以我在这里记录一下解决办法。

Python 2.6.2及以下版本自带的urllib2模块在HTTPS通过HTTP代理的会话中不会向代理发送CONNECT请求。这会导致长时间的超时,或者如果运气好,会出现类似下面的错误:

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

这个问题在Python的错误追踪系统中被记录为issue1424152。在这个错误报告中有修复补丁,可以解决Python 2.x和Python 3.x中的这个问题。这个问题已经被修复了

408

更新(2016年):

如果你只需要一个SOAP客户端,有一个维护得很好的库叫做 zeep。它支持Python 2和3哦 :)


更新:

除了上面提到的,我还想推荐一个链接 Python WebServices,这个页面总是更新最新的、被推荐的SOAP和其他类型的网络服务模块。


不幸的是,目前我觉得没有一个“最佳”的Python SOAP库。每个主流的库都有自己的优缺点。

老旧的库:

  • SOAPy:曾经是“最佳”,但现在不再维护了。不能在Python 2.5以上的版本上使用。

  • ZSI:使用起来非常麻烦,开发进展缓慢。里面有一个叫“SOAPpy”的模块,但和上面的SOAPy不一样。

“较新的”库:

  • SUDS:非常符合Python的风格,创建使用WSDL的SOAP客户端很简单。创建SOAP服务器稍微复杂一点。(这个包不支持Python3。如果是Python3,请看SUDS-py3)

  • SUDS-py3:SUDS的Python3版本

  • spyne:创建服务器很简单,创建客户端稍微有点挑战。文档有点不足。

  • ladon:创建服务器的方式和soaplib类似(使用装饰器)。Ladon可以同时暴露比SOAP更多的接口,而不需要额外的用户代码。

  • pysimplesoap:非常轻量,但对客户端和服务器都很有用 - 包含一个与web2py集成的web2py服务器。

  • SOAPpy:和上面提到的被遗弃的SOAPpy不同,这个版本实际上维护到2011年,现在似乎也被遗弃了。
  • soaplib:一个易于使用的Python库,用于编写和调用SOAP网络服务。用soaplib写的网络服务简单、轻量,能很好地与其他SOAP实现配合,并且可以作为WSGI应用部署。
  • osa:一个快速、轻便、易于使用的SOAP Python客户端库。

在这些库中,我个人只用过SUDS,我觉得它非常不错。

撰写回答