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, [EMAIL PROTECTED], [EMAIL 
PROTECTED],
$size);
return SOAP::Data->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::Data->name('get_recordReturn' => $record)-
>type('http://localhost:/esmith/SOAPWrapper:EsmithRecExtend),
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!
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to