---
name: "JSON::RPC::Client"
section: "3pm"
platform: "linux"
package: "libjson-rpc-perl"
version: "0.96-3"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/JSON::RPC::Client"
---

# JSON::RPC::Client(3pm)

Perl implementation of JSON-RPC client

## 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.
