我正在尝试运行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客户端连接服务时遇到问题。我使用the top answer here中的代码来获取我的小型web服务的方法列表,以及它们的参数和类型。我得到的结果并不是特别令人鼓舞:
say_hello(None: say_hello)
所以看起来我无法正确调用该函数的原因是它的参数和类型似乎没有注册:但是,据我所知,这不应该是这种情况。我特别傻眼,因为这是在soaplib网站上展示的hello world程序。
我在这里和其他地方搜索过,但我似乎没有在任何地方找到类似的问题。有什么想法吗?
答案 0 :(得分:1)
我试过了soaplib "Hello world" example。如果你像你一样添加
from soaplib.core.service import soap
,它就有效。
我使用soaplib
同时安装了suds
和pip install
。
$ pip freeze | grep -e'soaplib\|suds'
soaplib==2.0.0-beta2
suds==0.4
似乎soaplib
被重构为rpclib
,后者被spyne
取代。它不能为项目提供信心。