JSON::RPC::Client(3)

NAME
JSON::RPC::Client - Perl implementation of JSON-RPC client

SYNOPSIS
   use JSON::RPC::Client;

   my $client = new JSON::RPC::Client;
   my $url    = 'http://www.example.com/jsonrpc/API';

   my $callobj = {
      method  => 'sum',
      params  => [ 17, 25 ], # ex.) params => { a => 20, b => 10 } for JSON-RPC v1.1
   };

   my $res = $client->call($uri, $callobj);

   if($res) {
      if ($res->is_error) {
          print "Error : ", $res->error_message;
      }
      else {
          print $res->result;
      }
   }
   else {
      print $client->status_line;
   }

   # Easy access

   $client->prepare($uri, ['sum', 'echo']);
   print $client->sum(10, 23);

DESCRIPTION
This is JSON-RPC Client. See <http://json-rpc.org/wd/JSON-RPC-1-1-WD-20060807.html>.

Gets a perl object and convert to a JSON request data.

Sends the request to a server.

Gets a response returned by the server.

Converts the JSON response data to the perl object.

JSON::RPC::Client

  METHODS

$client = JSON::RPC::Client->new
    Creates new JSON::RPC::Client object.

$response = $client->call($uri, $procedure_object)
    Calls to $uri with $procedure_object. The request method is usually "POST". If $uri has query string, method is "GET".

    About 'GET' method, see to <http://json-rpc.org/wd/JSON-RPC-1-1-WD-20060807.html#GetProcedureCall>.

    Return value is "JSON::RPC::ReturnObject".

$client->prepare($uri, $arrayref_of_procedure)
    Allow to call methods in contents of $arrayref_of_procedure. Then you can call the prepared methods with an array reference or a list.

    The return value is a result part of JSON::RPC::ReturnObject.

       $client->prepare($uri, ['sum', 'echo']);

       $res = $client->echo('foobar');  # $res is 'foobar'.

       $res = $client->sum(10, 20);     # sum up
       $res = $client->sum( [10, 20] ); # same as above

    If you call a method which is not prepared, it will "croak".

    Currently, can't call any method names as same as built-in methods.

version
    Sets the JSON-RPC protocol version. 1.1 by default.

id  Sets a request identifier. In JSON-RPC 1.1, it is optoinal.

    If you set "version" 1.0 and don't set id, the module sets 'JSON::RPC::Client' to it.

ua  Setter/getter to LWP::UserAgent object.

json
    Setter/getter to the JSON coder object. Default is JSON, likes this:

       $self->json( JSON->new->allow_nonref->utf8 );

       $json = $self->json;

    This object serializes/deserializes JSON data. By default, returned JSON data assumes UTF-8 encoded.

status_line
    Returns status code; After "call" a remote procedure, the status code is set.

create_json_coder
    (Class method) Returns a JSON de/encoder in "new". You can override it to use your favorite JSON de/encoder.

JSON::RPC::ReturnObject
"call" method or the methods set by "prepared" returns this object. (The returned JSON data is decoded by the JSON coder object which was passed by the client object.)

  METHODS

is_success
    If the call is successful, returns a true, otherwise a false.

is_error
    If the call is not successful, returns a true, otherwise a false.

error_message
    If the response contains an error message, returns it.

result
    Returns the result part of a data structure returned by the called server.

content
    Returns the whole data structure returned by the called server.

jsontext
    Returns the row JSON data.

version
    Returns the version of this response data.

JSON::RPC::ServiceObject

RESERVED PROCEDURE
When a client call a procedure (method) name 'system.foobar', JSON::RPC::Server look up MyApp::system::foobar.

<http://json-rpc.org/wd/JSON-RPC-1-1-WD-20060807.html#ProcedureCall>

<http://json-rpc.org/wd/JSON-RPC-1-1-WD-20060807.html#ServiceDescription>

There is JSON::RPC::Server::system::describe for default response of 'system.describe'.

SEE ALSO
<http://json-rpc.org/wd/JSON-RPC-1-1-WD-20060807.html>

<http://json-rpc.org/wiki/specification>

AUTHOR
Makamaka Hannyaharamitu, <makamaka[at]cpan.org>

COPYRIGHT AND LICENSE
Copyright 2007-2008 by Makamaka Hannyaharamitu

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.