我以前从未使用过SOAP,对Python也有点陌生。我这样做是为了让自己熟悉这两种技术。我已经安装了soapplib,并试图阅读他们的客户端文档,但我不太理解它。是否还有其他更适合作为Python的SOAP客户端库的东西?

编辑:为了以防万一,我使用的是Python 2.6。


当前回答

我们使用了来自Python Web Services的SOAPpy,但似乎ZSI(同一来源)正在取代它。

其他回答

我听从了其他回答这个问题的建议,尝试了一下SUDS。在“愤怒地”使用它之后,我必须同意:SUDS非常好!强烈推荐!

我确实遇到了从代理后面调用基于http的web服务的麻烦。在撰写本文时,这将影响所有使用urllib2的Python web服务客户机,因此我将在这里记录解决方案。

python 2.6.2及以下版本附带的urllib2模块不会为http -over- http -代理会话向代理发出CONNECT。这会导致很长时间的超时,或者如果你幸运的话,会出现如下错误:

abort: error: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol

这是Python错误跟踪器的第1424152号问题。在Python 2中,bug报告附带的补丁将修复这个问题。3.x和Python 3.x。这个问题已经解决了。

我有很好的治疗sudds的经验 https://fedorahosted.org/suds

使用他们的TestSuite作为文档。

我的结论是:

Soap客户端:

只使用sds -jurko(更新2016年) Suds得到了良好的维护和更新。

更新06/2017:sds -jurko库没有更新,显然被放弃了,

我测试了zeep库,但得到了围绕令牌的限制,到目前为止只支持UsernameToken,我报告了一个错误,以创建时间戳令牌和作者更新代码来修复它。

Zeep开始良好,有良好的文档,所以我最近迁移我的代码从suds到Zeep,工作良好。

Soap服务器端:

我们有TGWS, soaplib (pysimplesoap未测试)IMHO使用和帮助soaplib必须是选择。

最好的问候,

肥皂水很不错。我尝试了SOAPpy,但没有得到它的工作方式,我需要而肥皂水工作得很直接。

毫无疑问,sudds是正确的选择。