Используя Spyne, пытаемся сжать несколько сгенерированных пространств имен в одно пространство имен в запросе SOAP - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть следующий SOAP-запрос, сгенерированный SOAPUI с использованием подхода ComplexModel запроса Spyne.

    <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

и смог управлять настройкой ответа так, как я хотел. Но не удалось найти такой подход для SOAP-запроса через Spyne.

Любые указатели здесь помогут.

1 Ответ

0 голосов
/ 07 октября 2019

Вам необходимо, чтобы аргумент 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)
...