Программа Python soaplib "Hello World" - параметры и типы, не отображаемые на клиенте
Я пытаюсь запустить программу Hello World из soaplib:
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. Я использовал код из верхнего ответа, чтобы получить список методов моего маленького веб-сервиса, а также их параметры и типы. Результат, который я получил, не был особенно обнадеживающим:
say_hello(None: say_hello)
Таким образом, похоже, что причина, по которой я не смог вызвать функцию должным образом, заключается в том, что ее параметры и типы не регистрируются: однако, насколько я могу судить, это не должно иметь место. Я особенно ошеломлен, так как это программа hello world, представленная на сайте soaplib.
Я искал и здесь, и в другом месте, но, похоже, нигде не вижу подобной проблемы. Какие-нибудь мысли?
1 ответ
I've tried the soaplib "Hello world" example. It works if you add
from soaplib.core.service import soap
как ты.
I've installed both soaplib
а также suds
с помощью pip install
,
$ pip freeze | grep -e'soaplib\|suds'
soaplib==2.0.0-beta2
suds==0.4
Похоже на то soaplib
was refactored to rpclib
который был заменен spyne
, Это не обеспечивает уверенность в проекте.