2016-06-07 2 views
0

Извините за мой английский. Я не могу понять, как 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. Но реализовать такую ​​строкутру я не смог получить

+0

Насколько мне известно, это недействительный ответ spyne. Однако вы можете использовать lxml.etree и ctx.out_document, чтобы вернуть все, что захотите. –

ответ

0

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

Насколько я знаю, наличие нескольких тегов под корпусом SOAP не является законным. Вы можете изменить файл ctx.out_document на все, что вам нравится.