|
Since updating to Axis 1.0, my .NET client no
longer understands the way axis sends arrays which are bean
properties.
For example, I have a WSMap class that contains two
String arrays, one called "Keys" and the other called "Values".
Over the wire, axis sends an object of this class
like this:
<multiRef id="id4" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="ns3:WSMap" xmlns:ns3="urn:myproject" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<Keys xsi:type="xsd:string">K1</Keys> <Keys xsi:type="xsd:string">K2</Keys> <Keys xsi:type="xsd:string">K3</Keys> <Values xsi:type="xsd:string">Value 1</Values> <Values xsi:type="xsd:string">Value 2</Values> <Values xsi:type="xsd:string">Value 3</Values> </multiRef> When .NET tries to deserialize this, it generates
an exception like this:
Unhandled Exception:
System.InvalidOperationException: There is an error in XML document (14, 41).
---> System.InvalidCastException: Cannot assign object of type System.String
to an object of type System.String[].
(This is pointing to the first <Keys>
element)
Does the problem lie with AXIS sending the data in
a non-standard way, or with .NET not supporting the standard?
In Axis beta2 it was sent like this, which .NET
understood fine:
<multiRef id="id4" SOAP-ENC:root="0"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="ns3:WSMap" xmlns:ns3="urn:myproject">
<Keys xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:string[3]"> <item>K1</item> <item>K2</item> <item>K3</item> </Keys> <Values xsi:type="SOAP-ENC:Array"
SOAP-ENC:arrayType="xsd:string[3]">
<item>Value 1</item> <item>Value 2</item> <item>Value 3</item> </Values> </multiRef>
Is there any way to make Axis 1.0 use the old
style?
|
- Empty arrays not serialized properly Martin Jericho
- Empty arrays not serialized properly Martin Jericho
- Re: .NET interoperability problem with arrays of "... Martin Jericho
