# XML::RPC - phpMan

## NAME
    [XML::RPC] -- Pure Perl implementation for an XML-RPC client and server.

## SYNOPSIS
    make a call to an XML-RPC server:

        use [XML::RPC];

        my $xmlrpc = [XML::RPC]->new('<http://betty.userland.com/RPC2>');
        my $result = $xmlrpc->call( 'examples.getStateStruct', { state1 => 12, state2 => 28 } );

    create an XML-RPC service:

        use [XML::RPC];
        use CGI;

        my $q      = new CGI;
        my $xmlrpc = [XML::RPC]->new();
        my $xml    = $q->param('POSTDATA');

        print $q->header( -type => 'text/xml', -charset => 'UTF-8' );
        print $xmlrpc->receive( $xml, \&handler );

        sub handler {
            my ( $methodname, @params ) = @_;
            return { you_called => $methodname, with_params => \@params };
        }

## DESCRIPTION
    [XML::RPC] module provides simple Pure Perl methods for XML-RPC
    communication. It's goals are simplicity and flexibility. [XML::RPC] uses
    [XML::TreePP] for parsing.

## CONSTRUCTOR AND OPTIONS
  $xmlrpc = [XML::RPC]->new();
    This constructor method returns a new [XML::RPC] object. Usable for
    XML-RPC servers.

  $xmlrpc = [XML::RPC]->new( '<http://betty.userland.com/RPC2>', %options );
    Its first argument is the full URL for your server. The second argument
    is for options passing to [XML::TreePP], for example: output_encoding =>
    'ISO-8859-1' (default is UTF-8).

## METHODS
  $xmlrpc->call( 'method_name', @arguments );
    This method calls the provides XML-RPC server's method_name with
    @arguments. It will return the server method's response.

  $xmlrpc->receive( $xml, \&handler );
    This parses an incoming XML-RPC methodCall and call the \&handler subref
    with parameters: $methodName and @parameters.

  $xmlrpc->xml_in();
    Returns the last XML that went in the client.

  $xmlrpc->xml_out();
    Returns the last XML that went out the client.

## CUSTOM TYPES
  $xmlrpc->call( 'method_name', { data => sub { { 'base64' => encode_base64($data) } } } );
    When passing a CODEREF to a value [XML::RPC] will simply use the returned
    hashref as a type => value pair.

## ERROR HANDLING
    To provide an error response you can simply die() in the \&handler
    function. Also you can set the $[XML::RPC::faultCode] variable to a (int)
    value just before dieing.

## PROXY SUPPORT
    Default [XML::RPC] will try to use [LWP::Useragent] for requests, you can
    set the environment variable: CGI_HTTP_PROXY to set a proxy.

## LIMITATIONS
    [XML::RPC] will not create "bool", "dateTime.iso8601" or "base64" types
    automatically. They will be parsed as "int" or "string". You can use the
    CODE ref to create these types.

## AUTHOR
    Niek Albers, <http://www.daansystems.com/>

## COPYRIGHT AND LICENSE
    Copyright (c) 2007-2008 Niek Albers. All rights reserved. This program
    is free software; you can redistribute it and/or modify it under the
    same terms as Perl itself.

