Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?

Re: Trouble Passing Objects using SOAP::Lite

by rjray (Chaplain)
on May 27, 2004 at 23:32 UTC ( #357095=note: print w/replies, xml ) Need Help??

in reply to Trouble Passing Objects using SOAP::Lite

This is a shortcoming in the (current) implementation of SOAP::Lite. The problem is that the object, implemented as a hash reference, is just serialized as a hash reference. Thus, there is no concern for the order of the keys. But element-order is significant in XML (unless otherwise stated) when using XML Schema, which most web-services (especially Java- and .NET-based ones) use in their WSDL definitions.

At the present time, there is no quick, simple solution to this. You have to write your own serializer, and you have to plug it into SOAP::Lite. I wrote an article for O'Reilly that touches on this in the context of talking to .NET services, but it would apply here, as well. The article is Five Tips for .NET Programming in Perl.


  • Comment on Re: Trouble Passing Objects using SOAP::Lite

Replies are listed 'Best First'.
Re: Re: Trouble Passing Objects using SOAP::Lite
by fogues (Initiate) on May 28, 2004 at 16:01 UTC

    Hi Randy and Monks:

    Thanks for the helpful info! I have got the order sorted out but am having trouble with the namespaces. I reread your article a few times but I must be missing something.

    My old requests had:

    ...<arrayOfEventModel_1 xsi:type="SOAP-ENC:ArrayOfEventModel" SOAP-ENC:arrayType="namesp1:EventModel[1]"> <item xsi:type="namesp1:EventModel">...

    and this was OK. But, the new requests have:

    ...<arrayOfEventModel_1 xsi:type="SOAP-ENC:ArrayOfEventModel" SOAP-ENC:arrayType="xsd:ur-type[1]"> <item>...

    I have noted that $attr (as received by serialize_complex_type) is a zero length string. I assume this impairs the intended namespace handling.

    My plan after this was to review the SOAP::Serialzer package AUTOLOAD sub (assuming it handles the as_whatever__class calls) and reuse some of this code in the serialize_complex_type sub in attempts to preserve the way this part of the serialization is handled. But there is no AUTOLOAD!

    Please let me know how I can locate this code, or if there's another angle to try.

    Thanks in advance,

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://357095]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (3)
As of 2022-05-22 02:44 GMT
Find Nodes?
    Voting Booth?
    Do you prefer to work remotely?

    Results (78 votes). Check out past polls.