Python有哪些SOAP客户端库,文档在哪里?
14 个回答
我对SUDS的使用体验很好。你可以在这里找到它。
我把他们的测试套件当作文档来用。
我按照其他回答的建议,试用了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中的这个问题。这个问题已经被修复了。
更新(2016年):
如果你只需要一个SOAP客户端,有一个维护得很好的库叫做 zeep。它支持Python 2和3哦 :)
更新:
除了上面提到的,我还想推荐一个链接 Python WebServices,这个页面总是更新最新的、被推荐的SOAP和其他类型的网络服务模块。
不幸的是,目前我觉得没有一个“最佳”的Python SOAP库。每个主流的库都有自己的优缺点。
老旧的库:
“较新的”库:
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,我觉得它非常不错。