Dear Monks:
I have a client that passes an ArrayOfEventModel object to a web service. Please refer to the following:
my $data;
#...... accumilate information in $data ......
my $events = ArrayOfEventModel->new($data);
my $soap;
my $som;
eval {
$soap = SOAP::Lite
-> uri(WS_URI())
-> proxy(WS_PROXY())
-> on_action( sub { sprintf '""', @_ } )
-> on_debug( sub { print @_ } )
-> on_fault( sub { } )
;
$som = $soap->processEvent(SOAP::Data->name('arrayOfEventModel
+_1')->type(ArrayOfEventModel=>$events));
};
# examines fault and dies if it finds one
get_error( $som, $@ );
that throws the following error:
(faultcode) env:Client:
(faultdetail) JAXRPC.TIE.01: caught exception while handling request:
+deserialization error: unexpected XML reader state. expected: END but
+ found: START: boroughID
So, $events is an array of EventModel objects, which (like most objects in perl) are hashes. When my request object is created (viewed by printing the debug information):
..............
<arrayOfEventModel_1 xsi:type="SOAP-ENC:ArrayOfEventModel"
+ SOAP-ENC:arrayType="namesp1:EventModel[1]">
<item xsi:type="namesp1:EventModel">
<name xsi:type="xsd:string">Name</name>
<boroughID xsi:type="xsd:int">3</boroughID>
<agencyDept xsi:type="xsd:string">Department* </ag
+encyDept>
<status xsi:type="xsd:string">p</status>
<eventImage xsi:type="xsd:string">http://image</ev
+entImage>
.............
the attributes do not appear in the same order as they are in my WSDL:
.......................
<complexType name="ArrayOfEventModel">
<complexContent>
<restriction base="soap11-enc:Array">
<attribute ref="soap11-enc:arrayType" wsdl:arrayType="tns:
+EventModel[]"/></restriction></complexContent></complexType>
<complexType name="EventModel">
<sequence>
<element name="ID" type="string"/>
<element name="address1" type="string"/>
<element name="address2" type="string"/>
<element name="address3" type="string"/>
<element name="agencyAcronym" type="string"/>
<element name="agencyDept" type="string"/>
<element name="boroughID" type="int"/>
.............................
Is this the reason the error is being thrown?
If so, how do I force a certain order of xml tags in my request?
If not, what else could be causing the problem?
Any thoughts would be appreciated.
Thanks,
Rob