python - 使用 Spyne,尝试将生成的多个命名空间压缩到 SOAP 请求中的单个命名空间
问题描述
我有以下 SOAPUI 使用 Spyne 请求的 ComplexModel 方法生成的 SOAP 请求。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ava="Namespace-1"
xmlns:book="spyne.example.django.models">
<soapenv:Header/>
<soapenv:Body>
<ava:GetChangesRequest>
<book:RequestIds>String1</book:RequestIds>
<book:From>2019-09-22</book:From>
<!--Optional:-->
<book:StartIndex>0</book:StartIndex>
</ava:GetChangesRequest>
</soapenv:Body>
</soapenv:Envelope>
请求的 ComplexModel 如下。
class GetChangesRequest(ComplexModel):
RequestIds = Unicode.customize(min_occurs=1)
From = Date.customize(min_occurs=1)
StartIndex = Integer.customize(default=0, min_occurs=0)
@rpc 定义是
@rpc(
GetChangesRequest,
_returns=GetChangesResponse,
_in_message_name='GetChangesRequest',
_out_message_name='GetChangesResponse',
_body_style='bare',
)
现在我希望避免在请求中使用这些多个命名空间。
关注这个 Stackoverflow 帖子从 Spyne 响应变量中删除命名空间
并且能够以我想要的方式管理自定义响应。但是无法通过 Spyne 为 SOAP 请求找到任何此类方法。
这里的任何指示都会有所帮助。
解决方案
您需要让tns
传递给应用程序的参数与GetChangesRequest
命名空间值相同。
IE
class GetChangesRequest(ComplexModel):
__namespace__ = 'Namespace-1'
RequestIds = Unicode.customize(min_occurs=1)
From = Date.customize(min_occurs=1)
StartIndex = Integer.customize(default=0, min_occurs=0)
推荐阅读
- javascript - Vue
加载标题组件两次 - android - Gradle 配置文件显示其他变体的依赖关系解析
- ruby-on-rails - Pundit 一直要求我登录
- css - 将文本转换为带有 shape-inside 或 SVG 的形状
- javascript - 猫鼬插入相同的数据三次而不是迭代到下一个数据
- asp.net-core - 控制器类中所有方法的通用代码
- python - 我有一个缩进错误,但我找不到它
- angular - 使用 HttpParams 和 FromObject 有条件地添加参数并使用变量作为键名
- swift - 如何将 base64 字符串发送到 POST 服务 - Swift
- vue.js - 在带有 Vue js 的大型应用程序中使用屏幕键盘的最佳方法是什么?