Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:
Pod::WSDL generates a wsdl containing (partially):=begin WSDL _IN smis @int session message id's to get data for _RETURN @SmiData smi data for each existing modality =end WSDL =cut sub getSmisData { my $class = shift; my (@smis) = @_; my $smiData = []; my $dbh = open_db(); if ($dbh) { # do something } else { # do something else } return ($smiData); }
I am using soapUI to test the wsdl. It automatically generates a request (partial):<complexType name="ArrayOfInt"> <complexContent> <restriction base="soapenc:Array"> <attribute ref="soapenc:arrayType" wsdl:arrayT +ype="soapenc:int[]" /> </restriction> </complexContent> </complexType> <complexType name="ArrayOfSmiData"> <complexContent> <restriction base="soapenc:Array"> <attribute ref="soapenc:arrayType" wsdl:arrayT +ype="tns1:SmiData[]" /> </restriction> </complexContent> </complexType> <wsdl:message name="getSmisDataRequest"> <wsdl:part name="smis" type="tns1:ArrayOfInt"> <wsdl:documentation>session message id's to get data for</ +wsdl:documentation> </wsdl:part> </wsdl:message> <wsdl:message name="getSmisDataResponse"> <wsdl:part name="getSmisDataReturn" type="tns1:ArrayOfSmiData" +> <wsdl:documentation>smi data for each existing modality</w +sdl:documentation> </wsdl:part> </wsdl:message>
The response to this is as if the function did not find any data and looks like (partial):<soapenv:Body> <heal:getSmisData soapenv:encodingStyle="http://schemas.xmlsoap. +org/soap/encoding/"> <smis xsi:type="heal:ArrayOfInt" soapenc:arrayType="soapenc:i +nt[2]" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"> <xsd:int>111</xsd:int> <xsd:int>222</xsd:int> </smis> </heal:getSmisData> </soapenv:Body>
However, if i change the request to (partial):<soap:Body> <getSmisDataResponse xmlns="http://monitor.site.local/HealthWS"> <soapenc:Array soapenc:arrayType="xsd:anyType[0]" xsi:type="s +oapenc:Array"/> </getSmisDataResponse>
(ie remove the array notion) i do get correct data for provided id's.<soapenv:Body> <heal:getSmisData soapenv:encodingStyle="http://schemas.xmlsoap. +org/soap/encoding/"> <xsd:int>111</xsd:int> <xsd:int>222</xsd:int> </heal:getSmisData> </soapenv:Body>
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Pod::WSDL array question
by Anonymous Monk on Jan 15, 2009 at 17:17 UTC |