[英]What SOAP client libraries exist for Python, and where is the documentation for them? [closed]
更新(2016):
如果只需要SOAP客户端,则有一个维护良好的库,称为zeep 。 它同时支持Python 2和3 :)
更新:
除了上面提到的内容之外,我还将参考Python WebServices页面,该页面始终是最新的,其中包含针对SOAP和所有其他Webservice类型的所有活动维护和推荐的模块。
不幸的是,目前,我认为没有“最好的” Python SOAP库。 每种主流产品都有其优点和缺点。
较旧的库:
“较新的”库:
SUDS :非常Pythonic,易于创建消耗WSDL的SOAP客户端。 创建SOAP服务器要困难一些。 (此软件包不适用于Python3。有关Python3,请参见SUDS-py3)
spyne :创建服务器很容易,创建客户端要困难一些。 缺少文档。
ladon :创建服务器非常类似于soaplib(使用装饰器)。 Ladon同时公开了比SOAP更多的接口,而无需额外的用户代码。
pysimplesoap :非常轻巧,但对客户端和服务器都有用-包括web2py附带的web2py服务器集成。
其中,我只是个人使用SUDS,我非常喜欢它。
我遵循了对该问题的其他答案的建议,并尝试了SUDS 。 在“愤怒”使用它之后,我必须同意:SUDS非常好! 强烈推荐!
我确实从代理后面调用基于HTTPS的Web服务时遇到麻烦。 在撰写本文时,这会影响所有使用urllib2
Python Web服务客户端,因此我将在此处记录该解决方案。
python 2.6.2及更低版本附带的urllib2
模块不会针对HTTPS-over-HTTP-proxy会话向代理发出CONNECT
。 这会导致超时,或者如果您很幸运,则会出现类似以下的错误:
abort: error: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
这是Python错误跟踪器上的issue1424152 。 错误报告附带有补丁程序,可在Python 2.x和Python 3.x中修复此问题。 这个问题已经解决 。
我在SUDS https://fedorahosted.org/suds上有很好的经验
使用他们的TestSuite作为文档。
SUDS是必经之路,毫无疑问。
只是针对查看SUDS的人员提供的FYI警告,在此票证解决之前,SUDS不支持WSDL中的“ choice”标签:
https://fedorahosted.org/suds/ticket/342
请参阅: 泡沫和选择标签
SUDS易于使用,但不能保证可以重入。 如果要在线程化应用程序中保留WSDL Client()对象以提高性能,则存在一定的风险。 此风险的解决方案clone()方法引发了不可恢复的Python 5508错误,该错误似乎可以打印,但并未真正引发异常。 可能会造成混淆,但是可以。 到目前为止,它仍然是最好的Python SOAP客户端。
我们发布了一个新的库: PySimpleSOAP ,它为简单而功能强大的客户端/服务器提供支持。 它的目标是:易用性和灵活性(不需要类,不需要自动生成的代码或xml),WSDL内省和生成,符合WS-I标准,兼容性(包括Java AXIS,.NET和Jboss WS)。 它包含在Web2Py中以启用完整堆栈解决方案(补充其他受支持的协议,例如XML_RPC,JSON,AMF-RPC等)。
如果有人正在学习SOAP或想对其进行调查,那么我认为这是一个不错的选择。
我相信soaplib已弃用其SOAP客户端(“发送者”),而改为使用肥皂水。 在这一点上,soaplib致力于成为一个与Web框架无关的SOAP服务器(“接收器”)。 当前soaplib正在积极开发中,通常在Python SOAP邮件列表中进行讨论:
我的结论是:
肥皂客户端:
仅使用
Suds-jurko
(2016年更新)可以很好地维护和更新泡沫。
更新06/2017:suds -jurko库未更新, 显然已被放弃 ,
我测试ZEEP库,但得到周围令牌的限制,现在只支持用户名令牌,我报告一个错误创建时间戳标记和作者更新的代码来修复它。
Zeep的启动良好,并且具有良好的文档 ,因此我最近将代码从suds迁移到了zeep,并且运行良好。
肥皂服务器端:
我们有TGWS,soaplib(未经测试的pysimplesoap)恕我直言使用,并且必须选择soaplib帮助。
最好的祝福,
泡沫非常好。 我尝试了SOAPpy,但没有按照我需要的方式正常工作,而肥皂水却很快就起作用了。
能否提供帮助: http : //users.skynet.be/pascalbotte/rcx-ws-doc/python.htm#SOAPPY
我是通过搜索wsdl
和python
找到它的, wsdl
的是,您需要对SOAP服务器进行wsdl描述才能进行任何有用的客户端包装程序。
我们使用了Python Web Services的 SOAPpy,但似乎ZSI(相同的源)正在取代它。
我在生产环境中将SOAPpy与Python 2.5.3结合使用。
我不得不在SOAPpy中手动编辑几个文件(关于标头代码放置在错误的位置),但除此之外,它仍然可以正常工作并且继续非常可靠地工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.