dam*_*mon 324 python soap soap-client
我之前从未使用过SOAP,而且我是Python的新手.我这样做是为了让自己熟悉这两种技术.我已经安装了SOAPlib,我试图阅读他们的客户端文档,但我不太了解它.还有什么我可以研究哪个更适合作为Python的SOAP客户端库?
编辑:为了防止它有用,我使用的是Python 2.6.
Sam*_*ain 383
更新(2016年):
如果您只需要SOAP客户端,那么维护良好的库名为zeep.它支持Python 2和3 :)
更新:
除了上面提到的,我将参考 Python WebServices页面,该页面始终是所有主动维护和推荐的SOAP和所有其他Web服务类型的模块的最新版本.
不幸的是,目前我认为没有"最好的"Python SOAP库.每个主流的都有自己的优点和缺点.
较旧的图书馆:
"较新"的图书馆:
SUDS:非常Pythonic,易于创建消耗WSDL的SOAP客户端.创建SOAP服务器有点困难.(此包不适用于Python3.对于Python3,请参阅SUDS-py3)
spyne:创建服务器很容易,让客户端更具挑战性.文档有点缺乏.
ladon:创建服务器就像在soaplib中一样(使用装饰器).Ladon同时暴露了比SOAP更多的接口,无需额外的用户代码.
pysimplesoap:非常轻量级但对客户端和服务器都很有用 - 包括与web2py一起提供的web2py服务器集成.
在上面,我个人只使用过SUDS,我非常喜欢它.
sst*_*ock 47
我按照这个问题的其他答案的建议,并尝试了SUDS.在"愤怒"使用它之后我必须同意:SUDS非常好!强烈推荐!
我在代理服务器后面调用基于HTTPS的Web服务时遇到了麻烦.在撰写本文时,这会影响所有使用的 Python Web服务客户端urllib2,因此我将在此处记录解决方案.
urllib2随python 2.6.2及更低版本一起提供的模块不会CONNECT向代理发出HTTPS-over-HTTP-proxy会话.这会导致超时,或者如果幸运的话,会出现如下错误:
abort: error: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Run Code Online (Sandbox Code Playgroud)
这是Python bug跟踪器上的issue1424152.bug报告中附有补丁,可以在Python 2.x和Python 3.x中修复此问题.问题已经解决了.
小智 10
SUDS是要走的路,毫无疑问.
对于查看SUDS的人来说只是一个FYI警告,在此故障单解决之前,SUDS不支持WSDL中的"choice"标记:
https://fedorahosted.org/suds/ticket/342
看: 泡沫和选择标签
小智 6
SUDS易于使用,但不保证可重入.如果您在线程应用程序中保留WSDL Client()对象以获得更好的性能,则存在一些风险.这种风险的解决方案,clone()方法,抛出了不可恢复的Python 5508错误,它似乎打印但并没有真正抛出异常.可能会令人困惑,但它确实有效.它仍然是迄今为止最好的Python SOAP客户端.