2013-02-28 4 views
1

Я экспериментировал с несколькими библиотеками сервера Python SOAP, и я, кажется, не быть в состоянии получить «привет мир» пример работает для spyne: https://github.com/arskom/spyne/blob/master/examples/helloworld_soap.pyПривет мир пример spyne SOAP сервера

Когда я запустите его, он запустит SOAP-сервер, и я могу успешно просмотреть WSDL в браузере по адресу http://localhost:7789/?wsdl. Однако, когда я пытаюсь соединиться с клиентом мыльной пены, я получаю исключение:

Python 2.7.3 (default, Aug 1 2012, 05:14:39) 
[GCC 4.6.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from suds.client import Client 
>>> c = Client('http://localhost:7789/?wsdl') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/home/acordiner/ve/local/lib/python2.7/site-packages/suds/client.py", line 112, in __init__ 
    self.wsdl = reader.open(url) 
    File "/home/acordiner/ve/local/lib/python2.7/site-packages/suds/reader.py", line 152, in open 
    d = self.fn(url, self.options) 
    File "/home/acordiner/ve/local/lib/python2.7/site-packages/suds/wsdl.py", line 158, in __init__ 
    self.resolve() 
    File "/home/acordiner/ve/local/lib/python2.7/site-packages/suds/wsdl.py", line 207, in resolve 
    c.resolve(self) 
    File "/home/acordiner/ve/local/lib/python2.7/site-packages/suds/wsdl.py", line 661, in resolve 
    self.resolveheaders(definitions, op) 
    File "/home/acordiner/ve/local/lib/python2.7/site-packages/suds/wsdl.py", line 725, in resolveheaders 
    raise Exception, "message'%s', not-found" % mn 
Exception: message's0:SomeObject', not-found 

Что я могу делать неправильно? Я использую spyne 2.9.4 и пенопласт 0.4.

ответ

5

Прошу прощения за это путаницу.

Пример, который вы связаны так: https://github.com/arskom/spyne/blob/ec2bd6feb89fb36915b7266497c177e4c6f78b83/examples/helloworld_soap.py

Он был использован для иллюстрации пены ошибки, которая фиксируется в my own version of suds, но не в основной пене. Позднее я забыл вернуть его обратно в основной репозиторий Spyne.

Вы можете найти relevant commit here.

Suds не может справиться с исходящими объектами заголовка, пространство имен которых отличается от targetNamespace. Вы можете сделать свою версию пены работой, установив SomeObject.__namespace__ = 'spyne.examples.hello.soap' вместо 'aaa'.

Вы также можете просто удалить декларацию исходящего заголовка, которая в любом случае не соответствует требованиям helloworld.

Надеюсь, это поможет.

+0

Это имеет смысл сейчас, спасибо! – aco

+0

Ты спас меня, огромное спасибо! –

Смежные вопросы