gpt4 book ai didi

soap - Spyne SOAP 服务器的合格元素/属性形式和不合格形式

转载 作者:行者123 更新时间:2023-12-01 02:25:58 29 4
gpt4 key购买 nike

有没有办法在 Spyne 服务器上使用 elementFormDefault="unqualified"服务器模式类型?
现在我的所有试验都以方法响应结果结束:

<senv:Envelope xmlns:tns="http://test.com/remoteService/"
xmlns:senv="http://schemas.xmlsoap.org/soap/envelope/">
<senv:Body>
<tns:testResponse>
<tns:status>ok</tns:status>
</tns:testResponse>
</senv:Body>

并生成带有“合格” elementFormDefault 的 wsdl 片段:
<xs:schema targetNamespace="http://test.com/remoteService/" elementFormDefault="qualified"></xs:schema>

如何配置方法或参数模型以获得如下结果:
<senv:Envelope xmlns:tns="http://test.com/remoteService/"
xmlns:senv="http://schemas.xmlsoap.org/soap/envelope/">
<senv:Body>
<tns:testResponse>
<status>ok<status>
</tns:testResponse>
</senv:Body>

我的目标是在子元素中生成结果:
<tns:status>ok</tns:status>

将没有命名空间前缀出现 - 像这样:
<status>ok<status>

最佳答案

如果您想知道如何为 method_return_string 的 event_manager 添加监听器或者对于另一个事件,请参阅下面的完整示例:

from spyne import Application, rpc, ServiceBase, Iterable, Integer, Unicode

from spyne.protocol.soap import Soap11
from spyne.server.wsgi import WsgiApplication


class HelloWorldService(ServiceBase):
@rpc(Unicode, Integer, _returns=Iterable(Unicode))
def say_hello(ctx, name, times):
for i in range(times):
yield u'Hello, %s' % name


def on_method_return_string(ctx):
ctx.out_string[0] = ctx.out_string[0].replace(b'Hello>', b'Good by')

HelloWorldService.event_manager.add_listener('method_return_string',
on_method_return_string)

application = Application([HelloWorldService], 'spyne.examples.hello.soap',
in_protocol=Soap11(validator='lxml'),
out_protocol=Soap11())

wsgi_application = WsgiApplication(application)


if __name__ == '__main__':
import logging

from wsgiref.simple_server import make_server
server = make_server('127.0.0.1', 8000, wsgi_application)
server.serve_forever()

从 Spyne 2.12 开始,这仍然是从响应变量中删除命名空间的唯一方法。

关于soap - Spyne SOAP 服务器的合格元素/属性形式和不合格形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16420036/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com