Spyne создать ответ

Извините за мой английский. Не могу понять, как SPYNE формирует ответ на запрос отправить его. Клиент отправляет в таком виде:

<SOAP-ENV: Envelope xmlns: ns0 = "http://schemas.xmlsoap.org/soap/envelope/" xmlns: ns1 = "localhost" xmlns: xsi = "http://www.w3.org/2001/ XMLSchema-instance "xmlns: SOAP-ENV =" http://schemas.xmlsoap.org/soap/envelope/ ">
    <SOAP-ENV: Header />
    <Ns0: Body>
       <Ns1: prerender>
          <Ns1: secret> secret_key </ ns1: secret>
          <Ns1: requestId> 1 </ ns1: requestId>
          <Ns1: projectId> id1 </ ns1: projectId>
       </ Ns1: prerender>
    </ Ns0: Body>
</ SOAP-ENV: Envelope>

И сервер отвечает так:

<Soap11env: Envelope xmlns: soap11env = "http://schemas.xmlsoap.org/soap/envelope/" xmlns: tns = "localhost">
   <Soap11env: Body>
     <Tns: prerenderResponse>
       <Tns: prerenderResult0> secret_key </ tns: prerenderResult0>
       <Tns: prerenderResult1> 1 </ tns: prerenderResult1>
     </ Tns: prerenderResponse>
   </ Soap11env: Body>
</ Soap11env: Envelope>

подскажите пожалуйста как сгенерировать такой ответ:

<SOAP-ENV:Envelope xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:ns1="localhost" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <ns0:Body>
      <ns1:secret>INT</ns1:commandType>
      <ns1:requestId>STRING</ns1:secret_key>
      <ns1:projectId>INT</ns1:requestId>
    </ns0:Body>
  </SOAP-ENV:Envelope>

Если я понял из документации. Это делается с помощью ComplexModel. Но реализовать такую ​​струкутру у меня не получилось


person Community    schedule 07.06.2016    source источник
comment
Насколько мне известно, это неправильный ответ шпиона. Однако вы можете использовать lxml.etree и ctx.out_document, чтобы вернуть все, что захотите.   -  person Burak Arslan    schedule 21.06.2016


Ответы (1)


Вы можете использовать @rpc(..., _out_variable_names=["foo", "bar"]) для изменения имен тегов prerenderResult0 и prerenderResult1.

Насколько мне известно, наличие нескольких тегов в теле SOAP является незаконным. Однако вы можете изменить ctx.out_document на что угодно.

person Burak Arslan    schedule 21.06.2016