Программа 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, Это не обеспечивает уверенность в проекте.

Другие вопросы по тегам