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
In reply to Trouble Passing Objects using SOAP::Lite by fogues
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |