# phpman > perldoc > Frontier::Responder

## NAME
    [Frontier::Responder](https://www.chedong.com/phpMan.php/perldoc/Frontier%3A%3AResponder/markdown) - Create XML-RPC listeners for normal CGI processes

## SYNOPSIS
     use [Frontier::Responder](https://www.chedong.com/phpMan.php/perldoc/Frontier%3A%3AResponder/markdown);
     my $res = [Frontier::Responder](https://www.chedong.com/phpMan.php/perldoc/Frontier%3A%3AResponder/markdown)->new( methods => {
                                                     add => sub{ $_[0] + $_[1] },
                                                     cat => sub{ $_[0] . $_[1] },
                                                    },
                                        );
     print $res->answer;

## DESCRIPTION
    Use *[Frontier::Responder](https://www.chedong.com/phpMan.php/perldoc/Frontier%3A%3AResponder/markdown)* whenever you need to create an XML-RPC listener using a standard CGI
    interface. To be effective, a script using this class will often have to be put a directory from
    which a web server is authorized to execute CGI programs. An XML-RPC listener using this library
    will be implementing the API of a particular XML-RPC application. Each remote procedure listed
    in the API of the user defined application will correspond to a hash key that is defined in the
    "new" method of a *[Frontier::Responder](https://www.chedong.com/phpMan.php/perldoc/Frontier%3A%3AResponder/markdown)* object. This is exactly the way *[Frontier::Daemon](https://www.chedong.com/phpMan.php/perldoc/Frontier%3A%3ADaemon/markdown)* works
    as well. In order to process the request and get the response, the "answer" method is needed.
    Its return value is XML ready for printing.

    For those new to XML-RPC, here is a brief description of this protocol. XML-RPC is a way to
    execute functions on a different machine. Both the client's request and listeners response are
    wrapped up in XML and sent over HTTP. Because the XML-RPC conversation is in XML, the
    implementation languages of the server (here called a *listener*), and the client can be
    different. This can be a powerful and simple way to have very different platforms work together
    without acrimony. Implicit in the use of XML-RPC is a contract or API that an XML-RPC listener
    implements and an XML-RPC client calls. The API needs to list not only the various procedures
    that can be called, but also the XML-RPC datatypes expected for input and output. Remember that
    although Perl is permissive about datatyping, other languages are not. Unforuntately, the
    XML-RPC spec doesn't say how to document the API. It is recommended that the author of a Perl
    XML-RPC listener should at least use POD to explain the API. This allows for the programmatic
    generation of a clean web page.

## METHODS
### new
        This is the class constructor. As is traditional, it returns a blessed reference to a
        *[Frontier::Responder](https://www.chedong.com/phpMan.php/perldoc/Frontier%3A%3AResponder/markdown)* object. It expects arguments to be given like a hash (Perl's named
        parameter mechanism). To be effective, populate the "methods" parameter with a hashref that
        has API procedure names as keys and subroutine references as values. See the SYNOPSIS for a
        sample usage.

### answer
        In order to parse the request and execute the procedure, this method must be called. It
        returns a XML string that contains the procedure's response. In a typical CGI program, this
        string will simply be printed to STDOUT.

## SEE ALSO
### perl

    <<http://www.scripting.com/frontier5/xml/code/rpc.html>>

## AUTHOR
    Ken MacLeod <<ken@bitsko.slc.ut.us>> wrote the underlying RPC library.

    Joe Johnston <<jjohn@cs.umb.edu>> wrote an adaptation of the [Frontier::Daemon](https://www.chedong.com/phpMan.php/perldoc/Frontier%3A%3ADaemon/markdown) class to create this
    CGI XML-RPC listener class.

