C
catherine_jervis
I have a ZSI client talking to a perl program through SOAP. The perl
program has defined a return type of $esmith::recExtend, where
esmith::recExtend is a complex type defined in the WSDL as follows:
<complexType name="EsmithRecExtend">
<sequence>
<element name="databasename" nillable="true" type="xsd:string">
</element>
<element name="key" nillable="true" type="xsd:string">
</element>
<element name="properties" nillable="true"
type="tns1:ArrayOfString">
</element>
<element name="values" nillable="true" type="tns1:ArrayOfString">
</element>
<element name="size" nillable="true" type="xsd:int">
</element>
</sequence>
</complexType>
The perl method returns an esmith::recExtend object as follows:
$record = esmith::recExtend->new('dbname, $dbkey, \@prop, \@value,
$size);
return SOAP:
ata->name('get_recordReturn' => $record);
The ZSI file is expecting an EsmithRecExtend object to be returned in
get_recordReturn. However, executing the above code causes the
following error:
ZSI.EvaluationException: No Registered xsi:type=
(http://namespaces.soaplite.com/perl, esmith__recExtend), subsititue
for xsi:type=(http://localhost:esmith/SOAPWrapper, EsmithRecExtend)
If I return SOAP:
ata->name('get_recordReturn' => $record)-
I believe that the TypeError: unpack non sequence is resulting because
the ZSI attempts to seperate the type into (namespace, type) with the
division between the two defined by the ' : ' character, which is
found
more than once in the given namespace.
Does anyone have any ideas on how to resolve this issue?
What do I do to return the complex type and have the
ZSI client understand it?
Thanks for any help!
program has defined a return type of $esmith::recExtend, where
esmith::recExtend is a complex type defined in the WSDL as follows:
<complexType name="EsmithRecExtend">
<sequence>
<element name="databasename" nillable="true" type="xsd:string">
</element>
<element name="key" nillable="true" type="xsd:string">
</element>
<element name="properties" nillable="true"
type="tns1:ArrayOfString">
</element>
<element name="values" nillable="true" type="tns1:ArrayOfString">
</element>
<element name="size" nillable="true" type="xsd:int">
</element>
</sequence>
</complexType>
The perl method returns an esmith::recExtend object as follows:
$record = esmith::recExtend->new('dbname, $dbkey, \@prop, \@value,
$size);
return SOAP:
The ZSI file is expecting an EsmithRecExtend object to be returned in
get_recordReturn. However, executing the above code causes the
following error:
ZSI.EvaluationException: No Registered xsi:type=
(http://namespaces.soaplite.com/perl, esmith__recExtend), subsititue
for xsi:type=(http://localhost:esmith/SOAPWrapper, EsmithRecExtend)
If I return SOAP:
then a TypeError: unpack non sequence exception is thrown.
I believe that the TypeError: unpack non sequence is resulting because
the ZSI attempts to seperate the type into (namespace, type) with the
division between the two defined by the ' : ' character, which is
found
more than once in the given namespace.
Does anyone have any ideas on how to resolve this issue?
What do I do to return the complex type and have the
ZSI client understand it?
Thanks for any help!