Добавление пространства имен xsi: type и envelope при использовании SUDS

Мне нужно взаимодействовать со службой SOAP, и у меня много проблем с этим; был бы очень признателен за любые указания на это. Исходное сообщение об ошибке было:

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

После некоторых исследований выясняется, что это разногласие между SUDS и сервером, как справиться с

type="xsd:anyType"

на элементе, о котором идет речь.

Я подтвердил использование SOAPUI и после того, как сообщил, что проблему можно решить, выполнив следующие действия:

Adding xsi:type="xsd:string" to each element which causes problems Adding xmlns:xsd="http://www.w3.org/2001/XMLSchema" to the SOAP Envelope

Итак, где SUDS в настоящее время делает это:

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

вместо этого он должен произвести следующее:

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

Есть ли правильный способ сделать это? Я видел предложения по использованию ImportDoctor или MessagePlugins, но не понял, как достичь желаемого эффекта.

Ответы на вопрос(2)

Ваш ответ на вопрос