Hi,

I created a simple web service with style RPC/encoded, which receives and
returns complex objects (a request containing an array of sub-requests,
which in turn contain arrays of sub-sub-requests and the same structure for
the response). It works fine (for the moment), however I see that the
generated message (I see it on the SOAPMonitor) is (for me) something
strange. In fact the child collections are not directed included in their
parents but referenced, like:

    <doctorResponse soapenc:arrayType="ns2:DigniResponseDoctorRPC[1]"
xsi:type="soapenc:Array">
      <item href="#id2"/>
    </doctorResponse>

The same happens also for "xsd:int" elements like:

  <requestResponseCode href="#id1"/>
  ...
  <multiRef id="id1" soapenc:root="0" 
        soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
        xsi:type="xsd:int" 
 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>0</multiRef>

This makes it difficult for a human to read these messages.

Could you kindly tell me whether this is the normal behavior of RPC/encoded
messages or if it is due to a problem/mistake in my WSDL definition?
I join a simple Response message and an extract of my WSDL file (schema and
message definitions).

Thanks a lot for your help!

Regards,
Patrick


<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:validateResponse 
        soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
        xmlns:ns1="urn:ch.arpage.digni.rpc">
    <response href="#id0"/>
  </ns1:validateResponse>
  <multiRef id="id0" soapenc:root="0" 
        soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
        xsi:type="ns2:DigniResponseRPC"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; 
        xmlns:ns2="urn:ch.arpage.digni.rpc">
    <insuranceEAN xsi:type="xsd:string">7612345678901</insuranceEAN>
    <insuranceRequestId xsi:type="xsd:string">123</insuranceRequestId>
    <responseDate
xsi:type="xsd:dateTime">2004-09-22T11:19:24.574Z</responseDate>
    <requestResponseCode href="#id1"/>
    <doctorResponse soapenc:arrayType="ns2:DigniResponseDoctorRPC[1]"
xsi:type="soapenc:Array">
      <item href="#id2"/>
    </doctorResponse>
  </multiRef>
  <multiRef id="id1" soapenc:root="0" 
        soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
        xsi:type="xsd:int" 
 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>0</multiRef>
  <multiRef id="id2" soapenc:root="0" 
        soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
        xsi:type="ns3:DigniResponseDoctorRPC" 
        xmlns:ns3="urn:ch.arpage.digni.rpc" 
        xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>
    <doctorEAN xsi:type="xsd:string">1108</doctorEAN>
    <doctorResponseCode href="#id3"/>
    <positionResponse xsi:type="ns3:DigniResponsePositionRPC"
xsi:nil="true"/>
  </multiRef>
  <multiRef id="id3" soapenc:root="0" 
        soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
        xsi:type="xsd:int" 
 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>100</multiRef>
</soapenv:Body>
</soapenv:Envelope>


SCHEMA DEFINITION (EXTRACT):
===========================

   <complexType name="DigniResponsePositionRPC">
    <sequence>
     <element name="tarmedKey" nillable="true" type="xsd:string"/>
     <element name="invoiceDate" nillable="true" type="xsd:date"/>
     <element name="responseCode" type="xsd:int"/>
    </sequence>
   </complexType>
   <complexType name="DigniResponsePositionRPCList">
    <complexContent>
     <restriction base="soapenc:Array">
      <attribute ref="soapenc:arrayType"
wsdl:arrayType="impl:DigniResponsePositionRPC[]"/>
     </restriction>
    </complexContent>
   </complexType>
   <complexType name="DigniResponseDoctorRPC">
    <sequence>
     <element name="doctorEAN" nillable="true" type="xsd:string"/>
     <element name="doctorResponseCode" type="xsd:int"/>
     <element name="positionResponse" nillable="true"
type="impl:DigniResponsePositionRPCList"/>
    </sequence>
   </complexType>
   <complexType name="DigniResponseDoctorRPCList">
    <complexContent>
     <restriction base="soapenc:Array">
      <attribute ref="soapenc:arrayType"
wsdl:arrayType="impl:DigniResponseDoctorRPC[]"/>
     </restriction>
    </complexContent>
   </complexType>
   <complexType name="DigniResponseRPC">
    <sequence>
     <element name="insuranceEAN" nillable="true" type="xsd:string"/>
     <element name="insuranceRequestId" nillable="true" type="xsd:string"/>
     <element name="responseDate" nillable="true" type="xsd:dateTime"/>
     <element name="requestResponseCode" type="xsd:int"/>
     <element name="doctorResponse" nillable="true"
type="impl:DigniResponseDoctorRPCList"/>
    </sequence>
   </complexType>


MESSAGE DEFINITION
==================

   <wsdl:message name="validateResponse">
      <wsdl:part name="response" type="impl:DigniResponseRPC"/>
   </wsdl:message>




Reply via email to