Sorry, misleading header, I was talking about WSDL2Java. Also, I noticed that 
the other server returns type as "xsd:string[8]" and Axis returns it as 
"soapenc:string[8]". Is that related? Please help. -- Andy

>>> [EMAIL PROTECTED] 12/02/04 03:23PM >>>
I'm using WSDL2Java to create a service consumed by a .NET client I can't 
change for a WSDL we're mandated to use. It has a service called "GetService" 
defined as follows in the WSDL (details omitted):

<complexType name="ArrayOfstring">
  <complexContent>
    <restriction base="SOAP-ENC:Array">
      <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="string[]"/>
    </restriction>
  </complexContent>
</complexType>
<message name="GetServicesResponse">
  <part name="return" type="typens:ArrayOfstring"/>
</message>
<operation name="GetServices" parameterOrder="securityToken serviceType">
<documentation>Query services offered by the node</documentation>
  <input message="tns:GetServices"/>
  <output message="tns:GetServicesResponse"/>
</operation>

I'm just using the binding implementation stub to craft a response. The 
response from the Axis client is as follows:

<soapenv:Envelope>
<soapenv:Body>
<getServicesResponse 
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";>
<return soapenc:arrayType="soapenc:string[9]" xsi:type="soapenc:Array">
<item xsi:type="soapenc:string">PNWWQX.GetProjects</item>
...

Which the .NET client says is an illegal response. ("There is an error in the 
XML document (1,384)"). A response from another server which it likes is:

<soapenv:Envelope>
<soapenv:Body>
<ns1:GetServicesResponse 
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";>
<return xsi:type="soapenc:Array" soapenc:arrayType="xsd:string[8]">
<item>GetFacilityByName</item>

There are only three differences between the messages, which I rank in 
decreasing likelihood they are causing the problem:

1) That the GetServicesResponse operation defined in the WSDL is sent back as 
getServicesResponse with an initial lower-case letter.

2) That the response in the second is in a user namespace.

3) The additional type information provided in the first response.

I'm thinking the most likely reason is the initial lower-case letter. How can I 
fix this so the response in the first message looks like the second message 
using WSDL2Java (i.e. without writing my own customized deserializer for the 
array). -- Andy



Reply via email to