LINUX.ORG.RU

spyne как отправить и получить xml

 ,


2

2

Всем доброго времени суток! В данный момент занят написанием SOAP-сервера с использованием spyne (дальнейшее развитие soaplib). Код сервера на данный момент примерно следующий:

from spyne.application import Application 
from spyne.decorator import  rpc
from spyne.service import ServiceBase 
from spyne.model import String, Integer, xml, ComplexModel 
from spyne.protocol.soap import Soap11
from spyne.server.wsgi import WsgiApplication 
 
class MBPService(ServiceBase):
    @rpc(xml, _returns=xml) # определяет тип и количество принимаемых объектов и тип возвращаемого значения
    def command(ctx, arg1):
        print '========='
        print arg1
        print '========='
        return arg1
 
application = Application([MBPService], 'localhost',
                          in_protocol=Soap11(validator='lxml'),
                          out_protocol=Soap11())
 
wsgi_application = WsgiApplication(application)
 
if __name__ == '__main__':
    # далее поднимается наш сервер
    from wsgiref.simple_server import make_server
    print 'start server'
    server = make_server('127.0.0.1', 6363, wsgi_application)
    server.serve_forever()
Но при попытке запустить на исполнение
Traceback (most recent call last):
  File "/home/user/test2/server.py", line 12, in <module>
    class MBPService(ServiceBase):
  File "/home/user/test2/spyne/service.py", line 53, in __init__
    descriptor = v(_default_function_name=k)
  File "/home/user/test2/spyne/decorator.py", line 341, in explain_method
    _no_ctx, _no_self, _args, body_style_str)
  File "/home/user/test2/spyne/decorator.py", line 115, in _produce_input_message
    namespace=ns, members=in_params)
  File "/home/user/test2/spyne/model/complex.py", line 1092, in produce
    '_type_info': TypeInfo(members),
  File "/home/user/test2/spyne/util/meta.py", line 66, in preparing_constructor
    return constructor(cls, name, bases, attributes)
  File "/home/user/test2/spyne/model/complex.py", line 587, in __new__
    _sanitize_type_info(cls_name, _type_info, _type_info_alt)
  File "/home/user/test2/spyne/model/complex.py", line 490, in _sanitize_type_info
    raise ValueError( (cls_name, k, v) )
ValueError: ('command', 'arg1', None)

Просмотр исходного кода мне лично не помог - запутался еще больше. Может быть сталкивался кто-то с подобной проблемой? Вообще изначальная задача это получить XML для парсинга и отправить свой xml в качестве ответа. Заранее благодарю за помощь



Последнее исправление: virvaldium (всего исправлений: 1)

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.