The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

SOAP::WSDL::Client - SOAP::WSDL's SOAP Client

METHODS

call

Configuration methods

outputxml

 $soap->outputxml(1);

When set, call() returns the raw XML of the SOAP Envelope.

set_content_type

 $soap->set_content_type('application/xml; charset: utf8');

Sets the content type and character encoding.

You probably should not use a character encoding different from utf8: SOAP::WSDL::Client will not convert the request into a different encoding (yet).

To leave out the encoding, just set the content type without appendet charset like in

 text/xml

Default:

 text/xml; charset: utf8

set_trace

 $soap->set_trace(1);
 $soap->set_trace( sub { Log::Log4perl::get_logger()->debug( @_ ) } );

When set to a true value, tracing (via warn) is enabled.

When set to a code reference, this function will be called on every trace call, making it really easy for you to set up log4perl logging or whatever you need.

Features different from SOAP::Lite

SOAP::WSDL does not aim to be a complete replacement for SOAP::Lite - the SOAP::Lite module has it's strengths and weaknesses and SOAP::WSDL is designed as a cure for the weakness of little WSDL support - nothing more, nothing less.

Nonetheless SOAP::WSDL mimics part of SOAP::Lite's API and behaviour, so SOAP::Lite users can switch without looking up every method call in the documentation.

A few things are quite different from SOAP::Lite, though:

SOAP request data

SOAP request data may either be given as message object, or as hash ref (in which case it will automatically be encoded into a message object).

Return values

The result from call() is not a SOAP::SOM object, but a message object.

Message objects' classes may be generated from WSDL definitions automatically - see SOAP::WSDL::Generator::Typelib on how to generate your own WSDL based message class library.

Fault handling

SOAP::WSDL::Client returns a fault object on errors, even on transport layer errors.

The fault object is a SOAP1.1 fault object of the following SOAP::WSDL::SOAP::Typelib::Fault11.

SOAP::WSDL::SOAP::Typelib::Fault11 objects are false in boolean context, so you can just do something like

 my $result = $soap->call($method, $data);

 if ($result) {
    # handle result
 }
 else {
    die $result->faultstring();
 }

outputxml

SOAP::Lite returns only the content of the SOAP body when outputxml is set to true. SOAP::WSDL::Client returns the complete XML response.

Auto-Dispatching

SOAP::WSDL::Client does does not support auto-dispatching.

This is on purpose: You may easily create interface classes by using SOAP::WSDL::Client and implementing something like

 sub mySoapMethod {
     my $self = shift;
     $soap_wsdl_client->call( mySoapMethod, @_);
 }

You may even do this in a class factory - see wsdl2perl.pl for creating such interfaces.

Debugging / Tracing

While SOAP::Lite features a global tracing facility, SOAP::WSDL::Client allows to switch tracing on/of on a per-object base.

See set_trace on how to enable tracing.

LICENSE

Copyright 2004-2007 Martin Kutter.

This file is part of SOAP-WSDL. You may distribute/modify it under the same terms as perl itself

AUTHOR

Martin Kutter <martin.kutter fen-net.de>