0

我正在尝试运行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 程序。

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

4

1 回答 1

1

我试过soaplib“Hello world”示例。如果您像以前一样添加它,它会起作用 from soaplib.core.service import soap

我已经安装soaplibsuds使用pip install.

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

似乎soaplib被重构为rpclib替换为spyne. 它不能提供对项目的信心。

于 2012-07-20T13:48:23.170 回答