Проблема с программой soaplib hello world - PullRequest
1 голос
/ 11 ноября 2011

Я пытаюсь запустить этот сервер, но получаю сообщение об ошибке:

Сервер:

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

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)
        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"

ошибка:

Traceback (most recent call last):
  File "C:/Users/User/Desktop/wsdlHelloWorld.py", line 8, in <module>
    class HelloWorldService(DefinitionBase):
  File "C:/Users/User/Desktop/wsdlHelloWorld.py", line 9, in HelloWorldService
    @soap(String,Integer,_returns=Array(String))
NameError: name 'soap' is not defined

Это , где я нашел это, так что я предположил бы, что что-то не так с моей стороны, я пытался установить soaplib несколько раз раньше и испортил их из-за lxml, полагающегося на vcvarsall.bat, однако Я не должен думать, что это имеет значение ...

Обновление

хорошо, я получил пример для работы, добавив soap к моему soaplib.core.service импорту (дух). Итак ...

from soaplib.core.service import rpc, DefinitionBase, soap

однако теперь, когда я пытаюсь использовать пример клиента suds, который они предоставляют, я получаю эту ошибку.

  File "C:\Python27\lib\urllib2.py", line 1174, in do_open
    raise URLError(err)
URLError: <urlopen error [Errno 10061] No connection could be made because the target machine actively refused it>

Обновление

Сканирование nmap показывает, что на порту 7789 не запущена служба, из-за которой urllib2 выдает ошибку 10061.

Ответы [ 2 ]

2 голосов
/ 25 ноября 2011

Добавьте следующую строку в ваш импорт

   from soaplib.core.service import soap

И это должно работать нормально; -)

securedome

0 голосов
/ 11 ноября 2011

Не должно ли быть: @soapmethod(String,Integer,_returns=Array(String))?

...