Agregar xsi: espacio de nombres de tipo y sobre cuando se usa SUDS

Necesito interactuar con un servicio SOAP y estoy teniendo muchos problemas para hacerlo; Realmente apreciaría cualquier sugerencia sobre esto. El mensaje de error original fue:

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

Después de algunas investigaciones, resulta que esto es un desacuerdo entre SUDS y el servidor tiene que ver con cómo lidiar con

type="xsd:anyType"

en el elemento en cuestión.

He confirmado el uso de SOAPUI y, después de avisar que el problema se puede solucionar, sigue estos pasos:

Agregar xsi: type = "xsd: string" a cada elemento que cause problemasAgregando xmlns: xsd = "http://www.w3.org/2001/XMLSchema" al sobre SOAP

Entonces, donde SUDS actualmente hace esto:

<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>

en su lugar debería producir esto:

<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>

¿Hay una manera correcta de hacer esto? He visto sugerencias sobre el uso de ImportDoctor o MessagePlugins, pero realmente no me ha gustado cómo lograr el efecto deseado.

Respuestas a la pregunta(2)

Su respuesta a la pregunta