使用 Spyne,尝试将生成的多个名称空间压缩为 SOAP 请求中的单个名称空间

Using Spyne, trying to condense the multiple namespaces generated to a single namespace in a SOAP request

我有以下由 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>

请求的复杂模型如下。

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',
    )

现在我希望避免在请求中使用这些多个名称空间。

关注了这个 Whosebug post

并且能够按照我想要的方式管理自定义响应。但是无法通过 Spyne 为 SOAP 请求找到任何此类方法。

这里的任何指示都会有所帮助。

您需要让传递给应用程序的 tns 参数与 GetChangesRequest 命名空间值相同。

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)