基于wsdl创建python soap服务器

时间:2012-12-27 18:07:34

标签: python soap wsdl

我有一个描述Java产品上的通信服务器客户端的wsdl文件。 我正在实现一个基于Python的新服务器,它将实现相同的服务。

您是否了解基于wsdl创建Python服务器代码的任何方法,这不需要我编写所有涉及的复杂类型?

另外,你推荐什么Api?

2 个答案:

答案 0 :(得分:17)

  

这个问题没有得到足够的重视。

     

目前接受的答案很好,但答案是'不'。是否真的没有合理维护和一般的解决方案?

不幸的是,我不认为否定的答案是由于缺乏对问题的关注。在python中确实没有对WSDL的支持。如果你想避免从头开始构建自己的肥皂信封的复杂性,我唯一可以推荐你的是使用许多soap webservices工具(例如soapui)构建一个样本信封,然后将其用作模板字符串(I你的python代码中知道,可怕)

更新您可以使用spyne。它是一个python RPC工具包,其他协议支持SOAP。它将为您创建WSDL,但如果您的目标是实现您已经拥有的WSDL描述的服务,那么您将不得不微调您的spyne服务(用python编写),直到生成的WSDL与原始WSDL匹配

答案 1 :(得分:16)

在SOAP支持方面,遗憾的是Python不再使用“包含电池”。客户端的支持是可以接受的,但在服务器端,你基本上是靠自己。

您可能希望查看以下内容:

http://wiki.python.org/moin/WebServices

http://pywebsvcs.sourceforge.net/

http://doughellmann.com/2009/09/01/evaluating-tools-for-developing-with-soap-in-python.html

如果你真的想继续这条路线,似乎ZSI是使用的工具,尽管我怀疑它是否适用于最新的2.x Python发行版。

使用Python 2.6.6,我尝试使用ZSI 2.0从WSDL开始构建Web服务。在使用wsdl2pywsdl2dispatch生成代码时,有一些“模块已被弃用”警告,必须单独安装PyXML并破解我的sys.path只是为了让它先解决或否则我得到“模块ext.reader不存在”然后只有一个令人失望的“ZSI:在一个基本的”Hello world!“上的nillable(False),minOccurs(1)元素的错误得到了无”带有必需元素的WS。

切换到不再需要PyXML的ZSI 2.1_a1和wsdl2py完成所有操作(wsdl2dispatch为2.0做了什么)但是仍然以“ZSI:还没有为无法通过(False),minOccurs(1)元素“errors。

体验并不是很有趣但是我对Python提供的SOAP Web服务提供的意见已经足够了......这并不多(而且只是对于基本的Web服务而言,没什么好看的WS-* specs)。 YMMV!

编辑:我最近遇到了this SO question,虽然面向客户端解决方案,但它也提到了一些用于构建SOAP服务的库。