Python soaplib“;“你好,世界”;程序-参数和类型未显示在客户端上

Python soaplib“;“你好,世界”;程序-参数和类型未显示在客户端上,python,suds,soaplib,Python,Suds,Soaplib,我正在尝试运行soaplib Hello World程序: import soaplib from soaplib.core.service import rpc, DefinitionBase from soaplib.core.model.primitive import String, Integer from soaplib.core.server import wsgi from soaplib.core.model.clazz import Array from soaplib.co

我正在尝试运行soaplib Hello World程序:

import soaplib
from soaplib.core.service import rpc, DefinitionBase
from soaplib.core.model.primitive import String, Integer
from soaplib.core.server import wsgi
from soaplib.core.model.clazz import Array
from soaplib.core.service import soap


class HelloWorldService(DefinitionBase):
    @soap(String,Integer,_returns=Array(String))
    def say_hello(self,name,times):
        results = []
        for i in range(0,times):
            results.append('Hello, %s'%name)
        import pdb; pdb.set_trace() 
        return results

if __name__=='__main__':
    try:
        from wsgiref.simple_server import make_server
        soap_application = soaplib.core.Application([HelloWorldService], 'tns')
        wsgi_application = wsgi.Application(soap_application)
        server = make_server('localhost', 7789, wsgi_application)
        server.serve_forever()
    except ImportError:
        print "Error: example server code requires Python >= 2.5"
我在使用浏览器和简单的suds客户端连接服务时遇到问题。我使用中的代码获得了我的小Web服务的方法列表,以及它们的参数和类型。我得到的结果并不特别令人鼓舞:

say_hello(None: say_hello)
因此,我无法正确调用函数的原因似乎是它的参数和类型似乎没有注册:然而,据我所知,情况不应该是这样。我特别目瞪口呆,因为这是soaplib网站上的hello world节目

我在这里和其他地方都搜索过,但似乎在任何地方都没有找到类似的问题。有什么想法吗

我已经试过了。如果添加

从soaplib.core.service导入soap
,就像您所做的那样

我使用
pip install
安装了
soaplib
suds

$ pip freeze | grep -e'soaplib\|suds'
soaplib==2.0.0-beta2
suds==0.4

似乎
soaplib
被重构为
rpclib
,被
spyne
取代。这并不能给项目带来信心。

事实上,你是对的。对于基于python的Web服务的工具包,您还有其他建议吗?一般的建议是不要使用SOAP,除非您有具体的需求证明它是正确的。这里有成吨的水。对于一个简单的服务,您可以从类似Flask、Pyramid(适合RESTful服务)的东西开始
spyne
可能是基于SOAP的服务的最佳选择(我有一段时间没有评估SOAP选项了)。哈哈,相信我,我宁愿不使用SOAP。遗憾的是,这是我正在从事的项目的要求之一。:)谢谢你的建议!