Как проверить SOAP-сервис на python? - PullRequest
0 голосов
/ 13 марта 2019

В Python я создаю сервис мыла с библиотекой SPYNE.Код следующий:

import logging
logging.basicConfig(level=logging.DEBUG)
from spyne import Application, rpc, ServiceBase, Unicode
from spyne.protocol.xml import XmlDocument
from spyne.protocol.soap import Soap11
from spyne.server.wsgi import WsgiApplication


class notification(ServiceBase):
    @rpc(Unicode, _returns=Unicode)
    def notificacion(ctx, mensaje):
        return 'Hello, %s' % mensaje


application = Application([notification],
    tns='notificacion',
    in_protocol=XmlDocument(validator='lxml'),
    out_protocol=Soap11()
)
if __name__ == '__main__':
    from wsgiref.simple_server import make_server
    wsgi_app = WsgiApplication(application)
    server = make_server('0.0.0.0', 8080, wsgi_app)
    server.serve_forever()

Теперь мне нужно попробовать этот сервис.Я создал клиент с библиотекой ZEEP, который использует следующий сервис:

import zeep

var ='<?xml version="1.0" encoding="UTF-8"?><ShowAccesslists><Access-List><Type>Extended IP</Type><Name>test</Name></Access-List></ShowAccesslists>'

wsdl = 'http://0.0.0.0:8080'
client = zeep.Client(wsdl=wsdl)
print(client.service.notificacion(var))

Но я не уверен, как проверить результат вызова сервиса, который вы создаете.Может ли кто-нибудь направить меня по этому вопросу?Я не могу найти, как заставить клиента ходить.Сервер уже забирает меня, но когда я выполняю код клиента, он разрывает меня.Я пока не знаю, как это доказать или как я могу вызвать.

Кроме этого, я получаю следующую ошибку:

407 Ошибка клиента: требуется аутентификация для URL: http://0.0.0.0:8080/

1 Ответ

0 голосов
/ 17 июля 2019

NullServer - это хорошая функциональность для тестирования. Но чтобы завершить тестирование клиента, эти примеры являются хорошим началом, я предлагаю HttpClient от spyne.client.http или Client от suds.client.

Прост в работе:

from spyne.client.http import HttpClient

c = HttpClient('http://localhost:8000/', application)

u = c.factory.create("User")

u.user_name = 'dave'
u.first_name = 'david'

retval = c.service.add_user(u)

или

from suds.client import Client

c = Client('http://localhost:8000?wsdl')
u = c.factory.create("User")

u.user_name = 'dave'
u.full_name = 'david smith'

retval = c.service.put_user(u)

Ссылка: spyne_client .

...