soap::wsdl::deserializer::hash(3pm) [debian man page]
SOAP::WSDL::Deserializer::Hash(3pm) User Contributed Perl Documentation SOAP::WSDL::Deserializer::Hash(3pm)NAME
SOAP::WSDL::Deserializer::Hash - Deserializer SOAP messages into perl hash refs
SYNOPSIS
use SOAP::WSDL;
use SOAP::WSDL::Deserializer::Hash;
DESCRIPTION
Deserializer for creating perl hash refs as result of a SOAP call.
Output structure
The XML structure is converted into a perl data structure consisting of hash and or list references. List references are used for holding
array data.
SOAP::WSDL::Deserializer::Hash creates list references always at the maximum depth possible.
Examples:
XML:
<MyDataArray>
<MyData>1</MyData>
<MyData>1</MyData>
</MyDataArray>
Perl:
{
MyDataArray => {
MyData => [ 1, 1 ]
}
}
XML:
<DeepArray>
<MyData><int>1<int>/MyData>
<MyData><int>1<int>/MyData>
</DeepArray>
Perl:
{
MyDataArray => {
MyData => [
{ int => 1 },
{ int => 1 }
]
}
}
List reference creation is triggered by the second occurance of an element. XML Array types with one element only will not be represented
as list references.
USAGE
All you need to do is to use SOAP::WSDL::Deserializer::Hash.
SOAP::WSDL::Deserializer::Hash autoregisters itself for SOAP1.1 messages
You may register SOAP::WSDLDeserializer::Hash for other SOAP Versions by calling
SOAP::Factory::Deserializer->register('1.2',
SOAP::WSDL::Deserializer::Hash)
Limitations
o Namespaces
All namespaces are ignored.
o XML attributes
All XML attributes are ignored.
Differences from other SOAP::WSDL::Deserializer classes
o generate_fault
SOAP::WSDL::Deserializer::Hash will die with a SOAP::WSDL::Fault11 object when a parse error appears
METHODS
deserialize
Deserializes the message.
generate_fault
Generates a SOAP::WSDL::SOAP::Typelib::Fault11 object and returns it.
LICENSE AND COPYRIGHT
Copyright 2004-2008 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>
REPOSITORY INFORMATION
$Rev: 851 $
$LastChangedBy: kutterma $
$Id: Hash.pm 851 2009-05-15 22:45:18Z kutterma $
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Deserializer/Hash.pm $
perl v5.10.1 2010-12-21 SOAP::WSDL::Deserializer::Hash(3pm)
Check Out this Related Man Page
SOAP::WSDL::Server(3pm) User Contributed Perl Documentation SOAP::WSDL::Server(3pm)NAME
SOAP::WSDL::Server - WSDL based SOAP server base class
SYNOPSIS
Don't use directly, use the SOAP::WSDL::Server::* subclasses instead.
DESCRIPTION
SOAP::WSDL::Server basically follows the architecture sketched below (though dispatcher classes are not implemented yet)
SOAP Request SOAP Response
| ^
V |
------------------------------------------
| SOAP::WSDL::Server |
| -------------------------------------- |
| | Transport Class | |
| |--------------------------------------| |
| | Deserializer | Serializer | |
| |--------------------------------------| |
| | Dispatcher | |
| -------------------------------------- |
------------------------------------------
| calls ^
v | returns
-------------------------------------
| Handler |
-------------------------------------
All of the components (Transport class, deserializer, dispatcher and serializer) are implemented as plugins.
The architecture is not implemented as planned yet, but the dispatcher is currently part of SOAP::WSDL::Server, which aggregates serializer
and deserializer, and is subclassed by transport classes (of which SOAP::WSDL::Server::CGI is the only implemented one yet).
The dispatcher is currently based on the SOAPAction header. This does not comply to the WS-I basic profile, which declares the SOAPAction
as optional.
The final dispatcher will be based on wire signatures (i.e. the classes of the deserialized messages).
A hash-based dispatcher could be implemented by examining the top level hash keys.
EXCEPTION HANDLING
Builtin exceptions
SOAP::WSDL::Server handles the following errors itself:
In case of errors, a SOAP Fault containing an appropriate error message is returned.
o XML parsing errors
o Configuration errors
Throwing exceptions
The proper way to throw a exception is just to die - SOAP::WSDL::Server::CGI catches the exception and sends a SOAP Fault back to the
client.
If you want more control over the SOAP Fault sent to the client, you can die with a SOAP::WSDL::SOAP::Fault11 object - or just let the
SOAP::Server's deserializer create one for you:
my $soap = MyServer::SomeService->new();
die $soap->get_deserializer()->generate_fault({
code => 'SOAP-ENV:Server',
role => 'urn:localhost',
message => "The error message to pas back",
detail => "Some details on the error",
});
You may use any other object as exception, provided it has a serialize() method which returns the object's XML representation.
Subclassing
To write a transport-specific SOAP Server, you should subclass SOAP::WSDL::Server.
See the "SOAP::WSDL::Server::*" modules for examples.
A SOAP Server must call the following method to actually handle the request:
handle
Handles the SOAP request.
Returns the response message as XML.
Expects a "HTTP::Request" object as only parameter.
You may use any other object as parameter, as long as it implements the following methods:
o header
Called as header('SOAPAction'). Must return the corresponding HTTP header.
o content
Returns the request message
LICENSE AND COPYRIGHT
Copyright 2004-2008 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>
REPOSITORY INFORMATION
$Rev: 391 $
$LastChangedBy: kutterma $
$Id: Client.pm 391 2007-11-17 21:56:13Z kutterma $
$HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Client.pm $
perl v5.10.1 2010-12-21 SOAP::WSDL::Server(3pm)