【问题标题】:How to test a SOAP service in python?如何在 python 中测试 SOAP 服务?
【发布时间】:2019-03-13 19:22:31
【问题描述】:

在 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/

【问题讨论】:

标签: python python-3.x soap zeep spyne


【解决方案1】:

NullServer 是一个很好的测试功能。但是为了完成客户端测试,这个例子是一个好的开始,我建议HttpClient from spyne.client.http or Client from 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

【讨论】:

  • 请从您提供的链接中发布要点。它们将来会过期,那么您的答案仍然是合法的答案吗?
猜你喜欢
  • 2012-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 2016-07-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多