我有一个描述Java产品上的通信服务器客户端的wsdl文件。 我正在实现一个基于Python的新服务器,它将实现相同的服务。
您是否了解基于wsdl创建Python服务器代码的任何方法,这不需要我编写所有涉及的复杂类型?
另外,你推荐什么Api?
答案 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服务。在使用wsdl2py
和wsdl2dispatch
生成代码时,有一些“模块已被弃用”警告,必须单独安装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服务的库。