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

编辑:以防万一,我正在使用Python 2.6。

评论

它一定是SOAP,例如使用预先存在的Web服务吗? Python的xmlrpclib非常简单易用,并且我已经使用它将SOAP服务迁移到XMLRPC。

有时,人们只想连接到仅通过SOAP提供的服务,因此可以-早晚需要一个良好的python SOAP lib库。没有人会说服服务提供商用“更清洁的”东西代替SOAP ...

谁能提供2011年相关的更新?显然没有人可以再问这个问题。

仅供参考:我打开了一篇类似的文章,针对SOAP for Python 3:stackoverflow.com/questions/7817303/…

任何访问此问题的人都可以投票重新打开它,以便信息可以保持最新/可以发布新答案。

#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

我通过搜索wsdlpython找到了它,您将需要一个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