table of contents
| XML::RPC::Enc(3pm) | User Contributed Perl Documentation | XML::RPC::Enc(3pm) |
NAME¶
XML::RPC::Enc - Base class for XML::RPC encodersSYNOPSIS¶
Generic usage use XML::RPC::Fast;
my $server = XML::RPC::Fast->new( undef, encoder => XML::RPC::Enc::LibXML->new );
my $client = XML::RPC::Fast->new( $uri, encoder => XML::RPC::Enc::LibXML->new );
METHODS¶
The following methods should be implementednew (%args)¶
Should support arguments:- internal_encoding [ = undef ]
- Internal encoding. "undef" means wide perl characters (perl-5.8.1+)
- external_encoding [ = utf-8 ]
- External encoding. Which encoding to use in composed XML
request ($method, @args) : xml byte-stream, [ new call url ]¶
Encode request into XMLresponse (@args) : xml byte-stream¶
Encode response into XMLfault ($faultcode, $faultstring) : xml byte-stream¶
Encode fault into XMLregisterClass ($class_name,$encoder_cb)¶
Register encoders for custom Perl typesEncoders description:
# Generic:
$simple_encoder_cb = sub {
my $object = shift;
# ...
return type => $string;
};
# Encoder-dependent (XML::RPC::Enc::LibXML)
$complex_encoder_cb = sub {
my $object = shift;
# ...
return XML::LibXML::Node;
};
Samples:
$enc->registerClass( DateTime => sub {
return ( 'dateTime.iso8601' => $_[0]->strftime('%Y%m%dT%H%M%S.%3N%z') );
});
# Encoder-dependent (XML::RPC::Enc::LibXML)
$enc->registerClass( DateTime => sub {
my $node = XML::LibXML::Element->new('dateTime.iso8601');
$node->appendText($_[0]->strftime('%Y%m%dT%H%M%S.%3N%z'));
return $node;
});
decode ($xml) : $methodname, @args¶
Decode request xmldecode ($xml) : @args¶
Decode response xmldecode ($xml) : { fault => { faultCode => ..., faultString => ... } }¶
Decode fault xmlregisterType ($xmlrpc_type,$decoder_cb)¶
Register decoders for XML-RPC types$decoder_cb is depends on encoder implementation.
Samples for XML::RPC::Enc::LibXML
$enc->registerType( base64 => sub {
my $node = shift;
return MIME::Base64::decode($node->textContent);
});
$enc->registerType( 'dateTime.iso8601' => sub {
my $node = shift;
return DateTime::Format::ISO8601->parse_datetime($node->textContent);
});
COPYRIGHT & LICENSE¶
Copyright (c) 2008-2009 Mons Anderson.This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
AUTHOR¶
Mons Anderson, "<mons@cpan.org>"| 2011-10-19 | perl v5.20.2 |