Hi List,

currently I'm developing a soap server with SOAP::Lite. Now i ran into
trouble because I use an own schema with complex data types.
On client side everything works fine. Now I try to handle the
generated requests on the server side. But I can't figure out
how the deserializer presemts me the parsed information. I try to
process the following request:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
           xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";
               xmlns:xsd="http://www.w3.org/2001/XMLSchema";
      soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";
              xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
<soap:Body>
   <namesp1:AddGroupAttributes xmlns:namesp1="urn:MyService">
      <ProviderName xsi:type="xsd:string">
         MyProvider
      </ProviderName>
      <GroupName xsi:type="xsd:string">
         MyGroup
      </GroupName>
      <AttrList xsi:type="namesp1:attrList">
         <listItem xsi:type="namesp1:attrItem">
            <attrName xsi:type="xsd:string">
               Attribute1
            </attrName>
            <attrVal xsi:type="xsd:string">
               Value1
            </attrVal>
         </listItem>
         <listItem>
            <attrName xsi:type="xsd:string">
               Attribute2
            </attrName>
            <attrVal xsi:type="xsd:string">
               Wert2
            </attrVal>
         </listItem>
      </AttrList>
   </namesp1:AddGroupAttributes>
</soap:Body>
</soap:Envelope>

If I use the following handler

package MyService;

sub AddGroupAttributes {
   ($self, $provider, $group, $attrlist) = @_;

   ($name, $hashref) = split('=', $attrlist);
    $params = $$hashref;

   ...
}

the variables $provider and $group are set correctly but the
hash for the list items is empty. Do I have to override the
deserializer (if yes, is there any documentation available) or
am I handling the parameters in the wrong way?

I would appreciate if someone could point me in the right direction.

Thanks,

Tobias

Reply via email to