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

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

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

另外,你推荐什么 Api?

【问题讨论】:

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

标签: python soap wsdl


【解决方案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 服务器的支持不是很好。希望这些“新”库取得一些成功。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多