Python soaplib“;“你好,世界”;程序-参数和类型未显示在客户端上
我正在尝试运行soaplib Hello World程序: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
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。遗憾的是,这是我正在从事的项目的要求之一。:)谢谢你的建议!