Bueno, ya vemos cómo es el mensaje de respuesta del servidor, que, efectivamente, es en formato JSON.
El problema entonces es cuando se ejecuta el método sayHello, que parece que no devuelve una estructura JSON.
Apuesto a que el problema está en el servidor, que devuelve cadenas de caracteres, como valor de resultado, en lugar de una estructura completa JSON.
Hay una opción en JSON que se llama
allow_nonref, que permite que se le pase al módulo JSON valores que no están dentro de una estructura.
Prueba con esto:
Using perl Syntax Highlighting
use strict;
use warnings;
use Data::Dumper;
use JSON ();
use JSON::RPC::Simple::Client;
my $json = JSON->new->utf8->allow_nonref;
my $yourname = 'pedro';
my $c = JSON::RPC::Simple::Client->new(
'http://192.168.0.46/service.php/sayHello',
{
debug => 1,
json => $json,
}
);
my $results = $c->echo($yourname);
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
Aquí, estamos creando un objeto JSON, pero con la característica de que tiene activada la opción
allow_nonref. Luego, se lo pasamos a JSON::RPC::Simple::Client, para que use ese objeto en lugar del de por defecto, que es simplemente JSON->new->utf8.