I have noticed that a c# .net client does not handle the deserialization of empty arrays very well. You may be able to 'sidestep' this issue not sending empty arrays. I have been setting the array to null within a bean instead of sending an empty array : Example: <stateLists xsi:type="soapenc:Array" xsi:nil="true"/>
Hope this helps. Dan Stone -----Original Message----- From: Mitch Gitman [mailto:[EMAIL PROTECTED]] Sent: Tuesday, January 07, 2003 8:05 AM To: [EMAIL PROTECTED] Subject: .NET client and nested arrays I'm trying to get an Axis server and a C#/.NET client working together. I'm encountering one interop showstopper that appears to be more .NET's fault than Axis'. Whenever the bean-serialized object I send as a response has for a member an array of instances of either strings or some other beany object, the C# client complains that it can't deserialize the response. Now, I have only tried this on the C# client when the nested array is empty; I haven't tried non-empty. Background: * I've tested Axis client-to-Axis server, and it works. * I am using -- and would like to continue to use -- RPC style/SOAP encoding rather than document style/literal encoding, unless/until RPC proves unreasonable. * I run .NET's wsdl.exe console application to generate a proxy client source file, SoldierComponentService.cs, based on the Axis-generated WSDL. This works fine. The class compiles fine. The C# test classes that I write based on that proxy also compile fine. Here is the .NET client's error message: There is an error in XML document (14, 14). at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader) at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClient Message message, WebResponse response, Stream responseStream) at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) at Foo.Bar.SoldierComponentService.addOfficer(String in0) at Test.Foo.Bar.SoldierComponentTest.Main() For an object that has a single nested array, the location of the error traces to the end of the line after the line containing the nested array. Here's the line/element with the nested array: <soldersAsArray xsi:type="soapenc:Array" soapenc:arrayType="ns2:Soldier[0]"/> For an object that has two nested arrays, the location of the error traces to the end of the line after the SECOND line containing the nested array. Here are the two lines/elements with nested arrays: <officersAsArray xsi:type="soapenc:Array" soapenc:arrayType="xsd:string[0]"/> <noncomissionedsAsArray xsi:type="soapenc:Array" soapenc:arrayType="xsd:string[0]"/> The associated Java classes have public methods, getSuchAndSuchAsArray(), that return a raw array of the appropriate type. The type (if it's a custom type) gets correctly translated to source code by .NET's wsdl.exe. Whadayaknow, when I comment out those get-array methods, the .NET client deserializes the objects correctly. The definition of soapenc is found in the response's multiRef element: <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:OfficerBranch" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="urn:bar.foo"> So how do I get the "soapenc:Array" and soapenc:arrayType to work on the .NET client? ============================================= Here's the full response with the object that has two nested arrays: HTTP/1.1 100 Continue HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Transfer-Encoding: chunked Date: Mon, 06 Jan 2003 21:31:37 GMT Server: Apache Coyote/1.0 411 <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <ns1:addOfficerResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="urn:bar.foo"> <addOfficerReturn href="#id0"/> </ns1:addOfficerResponse> <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:OfficerBranch" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="urn:bar.foo"> <baseTag xsi:type="xsd:string">officer</baseTag> <officersAsArray xsi:type="soapenc:Array" soapenc:arrayType="xsd:string[0]"/> <key xsi:type="xsd:string">0000000007</key> <name xsi:type="xsd:string">home</name> <parent xsi:type="xsd:string">root</parent> <noncomissionedsAsArray xsi:type="soapenc:Array" soapenc:arrayType="xsd:string[0]"/> </multiRef> </soapenv:Body> </soapenv:Envelope> 0