我以前从未使用过SOAP,而我是Python的新手。我这样做是为了使自己熟悉这两种技术。我已经安装了SOAPlib,并尝试阅读其Client文档,但是我不太了解它。还有什么我可以研究的,哪个更适合用作Python的SOAP客户端库?
编辑:以防万一,我正在使用Python 2.6。
#1 楼
更新(2016):如果仅需要SOAP客户端,则有一个维护良好的库,称为zeep。它同时支持Python 2和3 :)
更新:
除了上面提到的内容,我将引用Python WebServices页面,该页面始终处于更新状态-到目前为止,所有针对SOAP和所有其他Web服务类型的主动维护和推荐模块。 。每个主流版本都有其优缺点。
较旧的库:
SOAPy:曾经是“最好的”,但是不再维护。在Python 2.5+上不起作用
ZSI:使用起来很痛苦,而且开发速度很慢。有一个名为“ SOAPpy”的模块,与上面的SOAPy不同。
“较新的”库:
SUDS:非常Pythonic,易于使用创建消耗WSDL的SOAP客户端。创建SOAP服务器要困难一些。 (此软件包不适用于Python3。有关Python3的信息,请参见SUDS-py3)。
SUDS-py3:SUDS的Python3版本
spyne:创建服务器很容易,给客户端创建带来一些挑战。缺少文档。
小伙子:创建服务器非常类似于soaplib(使用装饰器)。 Ladon同时公开了比SOAP更多的接口,而无需额外的用户代码。
pysimplesoap:非常轻巧,但对客户端和服务器均有用-包括web2py附带的web2py服务器集成。
SOAPpy:与上面ZSI链接上托管的废弃SOAPpy不同,该版本实际上一直维护到2011年,现在似乎也被废弃了。
soaplib:易于使用的python库进行编写和调用肥皂网服务。用soaplib编写的Web服务简单,轻巧,可以与其他SOAP实现很好地配合,并且可以作为WSGI应用程序进行部署。
其中,我只是个人使用SUDS,我非常喜欢。
评论
SOAPy和SOAPpy实际上是不同的。我进行了编辑以弄清楚,然后将该帖子转变为社区Wiki。
– Samat Jain
09年5月21日在20:16
+1代表SUDS,很棒的图书馆!在代理后面使用SUDS和HTTPS Web服务时遇到了问题。原来这是一个已知的Python urllib2问题。请参阅我的答案以获取更多详细信息。
–库存
09年8月6日在8:35
我尝试了SUD,但是在打开WSDL时陷入了无限循环。然后python抛出了递归限制错误。我发现了有关该问题的这张公开票:fedorahosted.org/suds/ticket/239显然,这是3年前一个库破坏错误,至今仍未修复。
–Buttons840
2012年2月27日在22:05
在bitbucket.org/jurko/suds上有一个维护的SUDS分支
– Sjaak Trekhaak
13年6月28日在12:10
我今天开始使用SUDS仅用于获取数据。它在soap标头中处理了基本的apikey auth,没有任何问题,而且响应也很容易解析。该文档还不错。
–糖精
2013年9月6日0:15在
#2 楼
我遵循了对该问题的其他答案的建议,并尝试了SUDS。在“愤怒”使用它之后,我必须同意:SUDS非常好!强烈建议!我确实从代理后面调用基于HTTPS的Web服务时遇到麻烦。在撰写本文时,这会影响所有使用
urllib2
的Python Web服务客户端,因此我将在此处记录该解决方案。 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中修复此问题。该问题已解决。
评论
刚刚安装它,即使我是Python的新手,它也非常直观,我可以在几分钟内发送SUDS请求。图书馆很棒!
–狮子座
2011年6月11日12:28
您介意更新此内容吗?我问是因为我单击了链接,并且该错误已修复。
– tshepang
2011年6月27日15:12
可惜它似乎不再被维持
– paulm
13-10-21在23:26
前我们的泡沫也很好。。但是它很慢。在双核计算机上,检索xml soap文件需要0.5秒,而处理则需要5秒!
– TjerkW
2014年9月5日在9:13
@paulm:尝试bitbucket.org/jurko/suds
–johndodo
16-2-25在10:34
#3 楼
我对SUDS有很好的经验https://fedorahosted.org/suds
将他们的TestSuite用作文档。
评论
SUDS很棒!真的很容易使用,好的文档,很棒的东西!
– Sander Versluys
2011年10月5日15:40
维护,python3支持的fork:suds-jurko。点安装suds-jurko
– laffuste
2015年6月19日3:00在
我试图用suds调用异步soap api,但工作正常但未得到任何回应,有人可以帮忙吗,请问我的问题:stackoverflow.com/questions/39227719/…
– Vikram Singh Chandel
16年8月30日在13:35
#4 楼
SUDS是必经之路,毫无疑问。评论
并且在大量WSDL文件上也失败。为了证明这一点-例如Bing Maps API,其中一些失败并且suds无法解析它们。
–user67627
2011年1月10日10:17
我发现SUDS支持SSL端点。
–leonigmig
2011年5月6日15:27
#5 楼
只是对正在看SUDS的人的警告,直到该票得到解决之前,SUDS不支持WSDL中的“ choice”标签: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客户端(“发送者”),而改为使用肥皂水。在这一点上,soaplib致力于成为一个与Web框架无关的SOAP服务器(“接收器”)。目前soaplib正在积极开发中,通常在Python SOAP邮件列表中进行讨论:http://mail.python.org/mailman/listinfo/soap
#9 楼
在我的结论中,我们有以下内容:肥皂客户端:
仅使用Suds-jurko(2016年更新)
肥皂泡得到很好的维护和更新。
UPDATE 06/2017:suds-jurko库未更新且显然已被放弃,
我测试了zeep库,但在令牌方面有局限性,目前仅支持UsernameToken,我向创建时间戳记令牌并编写代码更新作者以对其进行修复。
Zeep启动良好,并且具有良好的文档,因此我最近将代码从suds迁移到zeep并可以正常工作。
Soap服务器端:
我们有TGWS,soaplib(未经测试的pysimplesoap)恕我直言,必须选择使用并帮助soaplib。
最好的问候,
评论
Suds-jurko是否有好的文档/样本?在仓库中,有几个.rst文件,但是在有关如何使用该库的文档方面却很少。
– ierdna
17年6月16日在23:12
#10 楼
正如我在这里建议的那样,我建议您自己动手。实际上并不是那么困难,我怀疑这就是那里没有更好的Python SOAP库的原因。#11 楼
泡沫非常好。我尝试了SOAPpy,但没有按照我需要的方式正常工作,而肥皂水却很快就起作用了。#12 楼
可以提供帮助:http://users.skynet.be/pascalbotte/rcx-ws-doc/python.htm#SOAPPY我通过搜索
wsdl
和python
找到了它,您将需要一个SOAP服务器的wsdl描述来执行任何有用的客户端包装程序。...#13 楼
我们曾经使用过Python Web Services的SOAPpy,但似乎ZSI(相同的源)正在取代它。#14 楼
我在生产环境中将SOAPpy与Python 2.5.3结合使用。我不得不在SOAPpy中手动编辑几个文件(关于标头代码的位置不正确),但除了它能正常工作和继续非常可靠地进行操作。
评论
我们做了同样的事情,并且将SOAPpy与Python 2.6.3一起使用。
– Joe L.
2010年8月31日13:25
评论
它一定是SOAP,例如使用预先存在的Web服务吗? Python的xmlrpclib非常简单易用,并且我已经使用它将SOAP服务迁移到XMLRPC。有时,人们只想连接到仅通过SOAP提供的服务,因此可以-早晚需要一个良好的python SOAP lib库。没有人会说服服务提供商用“更清洁的”东西代替SOAP ...
谁能提供2011年相关的更新?显然没有人可以再问这个问题。
仅供参考:我打开了一篇类似的文章,针对SOAP for Python 3:stackoverflow.com/questions/7817303/…
任何访问此问题的人都可以投票重新打开它,以便信息可以保持最新/可以发布新答案。