in reply to auto generating wrapper classes for complex types defined in WSDL

Please don't construct complexType's by hand. Let the WSDL do it for you. I repeat: Never, ever use SOAP::Data manually; it's not worth it.

SOAP::WSDL (which is a sub-class of the client portion of SOAP::Lite) does what you want.

It constructs the classes based on complexType definitions in the WSDL. It can be told to cache the created classes to the filesystem, so you can extract them and add meta-functionality yourself. If properly named classes are found in your @INC they can be used to instantiate complex return values from a service call.

Version 2 of SOAP::WSDL is shaping up to be very flexible.

-David

Replies are listed 'Best First'.
Re^2: auto generating wrapper classes for complex types defined in WSDL
by cwilliams (Novice) on Oct 11, 2007 at 22:43 UTC
    I will have to look more closely at SOAP::WSDL. As far as I can tell, it does all the correct encoding of stuff I send to the server and uses the WSDL to do the right thing (and I applauded it for doing so). But the return values are still just autotyped and stuffed into nested hashes by SOAP::Lite. If you look at the call() subroutine in the SOAP::WSDL module, it looks like it wraps ups all of the parameters nice, then calls SUPER::call and returns the results without even looking at them. Nothing special is done to the return value as far as I can tell, which is specifically what I'm looking for. If I'm missing something about how SOAP::WSDL deals with the values returned by the soap calls, please point it out to me.