Adicionando o namespace xsi: type e envelope ao usar o SUDS

Eu preciso interagir com um serviço SOAP e estou tendo muita dificuldade em fazê-lo; agradeceria qualquer indicação sobre isso. A mensagem de erro original foi:

org.apache.axis2.databinding.ADBException: Any type element type has not been given

Depois de algumas pesquisas, verifica-se que este é um desacordo entre SUDS e o servidor tem que lidar com

type="xsd:anyType"

no elemento em questão.

Confirmei o uso do SOAPUI e após conselhos de que o problema pode ser corrigido seguindo estas etapas:

Adicionando xsi: type = "xsd: string" a cada elemento que causa problemasAdicionando xmlns: xsd = "http://www.w3.org/2001/XMLSchema" ao envelope SOAP

Então, onde o SUDS atualmente faz isso:

<SOAP-ENV:Envelope ... xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<ns3:Body>
  <ns0:method>
     <parameter>
        <values>
           <table>
              <key>EMAIL_ADDRESS</key>
              <value>[email protected]</value>
           </table>
        </values>
     </parameter>
  </ns0:method>

Em vez disso, deve produzir isso:

<SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" ... xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">

  <ns3:Body>
  <ns0:method>
     ...
     <parameter>
        <values>
           <table>
              <key xsi:type="xsd:string">EMAIL_ADDRESS</key>
              <value xsi:type="xsd:string">[email protected]</value>
           </table>
        </values>
     </parameter>
  </ns0:method>

Existe uma maneira correta de fazer isso? Já vi sugestões de uso de ImportDoctor ou MessagePlugins, mas não gravei realmente como obter o efeito desejado.

questionAnswers(2)

yourAnswerToTheQuestion