基于wsdl创建pythonsoap服务器

Posted

技术标签:

【中文标题】基于wsdl创建pythonsoap服务器【英文标题】:Create python soap server based on wsdl 【发布时间】:2012-12-13 02:33:52 【问题描述】:

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

你知道有什么方法可以创建基于 wsdl 的 Python 服务器代码,不需要我编写所有涉及的复杂类型吗?

另外,你推荐什么 Api?

【问题讨论】:

我正在为此添加赏金。我简直不敢相信没有好的解决方案。 顺便说一句:您知道任何可以基于 WSDL 生成代码(不是 Python 的)的库吗?我想知道为 Spyne 实现这样的功能(基于 WSDL 生成模型)会有多难。 似乎没有成熟的python soap服务器...不敢相信python会发生这种情况 【参考方案1】:

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

当前接受的答案很好,但它的答案是“否”。真的没有合理维护和通用的解决方案吗?

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

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

【讨论】:

【参考方案2】:

当谈到 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不存在”,然后在基本的“Hello world!”中出现令人失望的“ZSI:EvaluateException Got None for nillable(False), minOccurs(1) element”错误。带有必需元素的 WS。

切换到不再需要 PyXML 的 ZSI 2.1_a1 和 wsdl2py 完成了所有工作(wsdl2dispatch 为 2.0 所做的)但仍然以“ZSI:EvaluateException Got None for nillable(False), minOccurs(1) 元素”错误。

体验不是很有趣,但它足以让我对 Python 必须为 SOAP Web 服务提供什么形成意见......这并不多(而且那只是基本的 Web 服务,没有什么特别的WS-* specs)。 YMMV!

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

【讨论】:

不幸的是,我同意您的解决方案。 Python 对 SOAP 服务器的支持不是很好。希望这些“新”库取得一些成功。谢谢!

以上是关于基于wsdl创建pythonsoap服务器的主要内容,如果未能解决你的问题,请参考以下文章

WSDL for SOAP 和 WSDL for REST 和基于 JSON 的 REST

从 WSDL 文件创建 ASMX Web 服务

基于PHP——简单的WSDL的创建(WSDL篇)

ServiceRoute + WebServiceHostFactory 杀死 WSDL 生成?如何使用 ?wsdl 创建无扩展 WCF 服务

WSDL知识点

从 WSDL 文件生成 Web 服务 [关闭]