Página 3 de 3

Re: Cliente JSON para consumir servicio REST en PHP

NotaPublicado: 2011-07-03 16:02 @709
por scout
Desde el lado del servidor la función es muy simple...
La función de llamada la adjunto debajo de la sayHello para confirmar el codificado...

Sintáxis: [ Descargar ] [ Ocultar ]
Using php Syntax Highlighting
  1. function sayHello($yourname)
  2. {
  3.          return "Hello ".$yourname."!";
  4. }
Coloreado en 0.019 segundos, usando GeSHi 1.0.8.4

Sintáxis: [ Descargar ] [ Ocultar ]
Using php Syntax Highlighting
  1.  
  2.    private function call($name, $args) {
  3.         if ($this->methods[$name] == true) {
  4.             $result = call_user_func_array($name, $args);
  5.             return json_encode($result);
  6.         }
  7.     }
Coloreado en 0.009 segundos, usando GeSHi 1.0.8.4

Utilizando el código propuesto la respuesta fue la siguiente

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Script Output :
Executing file : C:\clientesimpledeserviciophp.pl

Raw content: '"Hello pedro!"}'
Didn't get a JSON object back at C:/perl/site/lib/JSON/RPC/Simple/Client.pm line 83.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Re: Cliente JSON para consumir servicio REST en PHP

NotaPublicado: 2011-07-03 16:53 @745
por explorer
Nada que hacer... las líneas 75 a 85 del módulo JSON::RPC::Simple::Client requieren, de todas maneras, que el resultado sea siempre una referencia a un hash:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. die "Didn't get a JSON object back" unless ref $result eq "HASH";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


La solución sería que el servidor respondiera siempre con una estructura JSON, y no con valores directos.

Habría otra posibilidad... pero habría que dar una voltereta...

Tendríamos que crear un paquete JSON propio, con nuestras propias funciones encode() y decode(), para que J::R::S:C lo aceptara, y así podríamos poner un if(), para que, en caso de que el servidor nos devuelva un valor de forma directa, convertirlo a un hash.

Es lo malo de los módulos Simple... que a veces son demasiado simples...

Otra cosa que puedes hacer... Editas el fichero C:/perl/site/lib/JSON/RPC/Simple/Client.pm y comentas (ocultas) la línea 83 :lol:

Re: Cliente JSON para consumir servicio REST en PHP

NotaPublicado: 2011-07-03 17:08 @755
por scout
No pasa nada, todo bien, explorer. Gracias por darle vueltas. La idea de todas las pruebas que voy haciendo es para avanzar en conocimientos y comparar soluciones, sobre todo comparar...

Respecto a los servicios web seguiré probando alternativas para o hacia Perl o probando otros módulos de Perl. Lo bueno es que ya pasé por SOAP, WSDL y REST y me sirvió mucho para aprender... Si encuentro en un futuro la solución lo postearé y si alguien va por este camino al menos le ayudará en sus pruebas...

Nuevamente muchas gracias.