私はSOAPサービスと対話する必要があり、そうするのに多くの問題を抱えています。これに関するポインタを本当にいただければ幸いです。元のエラーメッセージは次のとおりです。
org.apache.axis2.databinding.ADBException: Any type element type has not been given
いくつかの調査の結果、これはSUDSとサーバーの間の不一致であり、サーバーはどのように対処する必要があるかがわかりました。
type="xsd:anyType"
問題の要素について。
私はSOAPUIを使用して確認し、アドバイスの後、次の手順を実行することで問題を修正できることを確認しました。
- 問題の原因となる各要素にxsi:type = "xsd:string"を追加する
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"をSOAPエンベロープに追加する
したがって、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>example@example.org</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">example@example.org</value>
</table>
</values>
</parameter>
</ns0:method>
これを行う正しい方法はありますか?ImportDoctorまたはMessagePluginsを使用する提案を見てきましたが、目的の効果を実現する方法を実際に理解していません。