• Publicidad

Soap::lite dando problemas al iniciar cliente

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Soap::lite dando problemas al iniciar cliente

Notapor scout » 2011-05-15 17:14 @759

Hola buenas. Estoy tratando de hacer funcionar este ejemplo de SOAP::Lite pero me está dando un error cuando ejecuto el cliente. Me fijé en el cuadrante de versiones y la versión del módulo funciona con la del Perl que tengo instalada...

Si alguno sabe o le pasó lo mismo se lo agradeceré…

Esquema instalado:
Perl v5.12.3
Soap::lite v0.712 (el ppm muestra como que está bien instalado)

Error del cliente:
C:\Documents and Settings\admin>perl c:\cliente.pl
Can't locate Class/Inspector.pm in @INC (@INC contains: C:/Perl/site/lib C:/Perl
/lib .) at C:/Perl/site/lib/SOAP/Lite.pm line 435.
BEGIN failed--compilation aborted at C:/Perl/site/lib/SOAP/Lite.pm line 435.
Compilation failed in require at c:\cliente.pl line 1.
BEGIN failed--compilation aborted at c:\cliente.pl line 1.

Servidor.pl:
use SOAP::Transport::HTTP;
SOAP::Transport::HTTP::CGI
-> dispatch_to('Servidor')
-> handle;
package Servidor;
sub temperatura {
return "La temperatura actual es de 23 grados";
}


Cliente.pl:
use SOAP::Lite;
print "Se llama al servicio.\n";
my $respuesta = SOAP::Lite
-> uri('http://192.168.0.16:80/servidor')
-> proxy('http://192.168.0.16:80/servidor.pl')
-> temperatura
-> result;
print "La respuesta del servidor es: $respuesta \n"


Detalle de la instalación del módulo SOAP:

Installed files:
C:/Perl/html/bin/SOAPsh.html
C:/Perl/html/bin/XMLRPCsh.html
C:/Perl/html/bin/stubmaker.html
C:/Perl/html/site/lib/Apache/SOAP.html
C:/Perl/html/site/lib/Apache/XMLRPC/Lite.html
C:/Perl/html/site/lib/SOAP/Client.html
C:/Perl/html/site/lib/SOAP/Constants.html
C:/Perl/html/site/lib/SOAP/Data.html
C:/Perl/html/site/lib/SOAP/Deserializer.html
C:/Perl/html/site/lib/SOAP/Fault.html
C:/Perl/html/site/lib/SOAP/Header.html
C:/Perl/html/site/lib/SOAP/Lite.html
C:/Perl/html/site/lib/SOAP/Lite/Packager.html
C:/Perl/html/site/lib/SOAP/Packager.html
C:/Perl/html/site/lib/SOAP/SOM.html
C:/Perl/html/site/lib/SOAP/Schema.html
C:/Perl/html/site/lib/SOAP/Serializer.html
C:/Perl/html/site/lib/SOAP/Server.html
C:/Perl/html/site/lib/SOAP/Test.html
C:/Perl/html/site/lib/SOAP/Trace.html
C:/Perl/html/site/lib/SOAP/Transport.html
C:/Perl/html/site/lib/SOAP/Transport/LOOPBACK.html
C:/Perl/html/site/lib/SOAP/Transport/POP3.html
C:/Perl/html/site/lib/SOAP/Utils.html
C:/Perl/html/site/lib/UDDI/Lite.html
C:/Perl/html/site/lib/XML/Parser/Lite.html
C:/Perl/html/site/lib/XMLRPC/Lite.html
C:/Perl/html/site/lib/XMLRPC/Test.html
C:/Perl/html/site/lib/XMLRPC/Transport/HTTP.html
C:/Perl/html/site/lib/XMLRPC/Transport/POP3.html
C:/Perl/html/site/lib/XMLRPC/Transport/TCP.html
C:/Perl/site/bin/SOAPsh.bat
C:/Perl/site/bin/SOAPsh.pl
C:/Perl/site/bin/XMLRPCsh.bat
C:/Perl/site/bin/XMLRPCsh.pl
C:/Perl/site/bin/stubmaker.bat
C:/Perl/site/bin/stubmaker.pl
C:/Perl/site/lib/Apache/SOAP.pm
C:/Perl/site/lib/Apache/XMLRPC/Lite.pm
C:/Perl/site/lib/IO/SessionData.pm
C:/Perl/site/lib/IO/SessionSet.pm
C:/Perl/site/lib/SOAP/Client.pod
C:/Perl/site/lib/SOAP/Constants.pm
C:/Perl/site/lib/SOAP/Data.pod
C:/Perl/site/lib/SOAP/Deserializer.pod
C:/Perl/site/lib/SOAP/Fault.pod
C:/Perl/site/lib/SOAP/Header.pod
C:/Perl/site/lib/SOAP/Lite.pm
C:/Perl/site/lib/SOAP/Lite/Deserializer/XMLSchema1999.pm
C:/Perl/site/lib/SOAP/Lite/Deserializer/XMLSchema2001.pm
C:/Perl/site/lib/SOAP/Lite/Deserializer/XMLSchemaSOAP1_1.pm
C:/Perl/site/lib/SOAP/Lite/Deserializer/XMLSchemaSOAP1_2.pm
C:/Perl/site/lib/SOAP/Lite/Packager.pm
C:/Perl/site/lib/SOAP/Lite/Utils.pm
C:/Perl/site/lib/SOAP/Packager.pm
C:/Perl/site/lib/SOAP/SOM.pod
C:/Perl/site/lib/SOAP/Schema.pod
C:/Perl/site/lib/SOAP/Serializer.pod
C:/Perl/site/lib/SOAP/Server.pod
C:/Perl/site/lib/SOAP/Test.pm
C:/Perl/site/lib/SOAP/Trace.pod
C:/Perl/site/lib/SOAP/Transport.pod
C:/Perl/site/lib/SOAP/Transport/HTTP.pm
C:/Perl/site/lib/SOAP/Transport/IO.pm
C:/Perl/site/lib/SOAP/Transport/LOCAL.pm
C:/Perl/site/lib/SOAP/Transport/LOOPBACK.pm
C:/Perl/site/lib/SOAP/Transport/MAILTO.pm
C:/Perl/site/lib/SOAP/Transport/POP3.pm
C:/Perl/site/lib/SOAP/Transport/TCP.pm
C:/Perl/site/lib/SOAP/Utils.pod
C:/Perl/site/lib/UDDI/Lite.pm
C:/Perl/site/lib/XML/Parser/Lite.pm
C:/Perl/site/lib/XMLRPC/Lite.pm
C:/Perl/site/lib/XMLRPC/Test.pm
C:/Perl/site/lib/XMLRPC/Transport/HTTP.pm
C:/Perl/site/lib/XMLRPC/Transport/POP3.pm
C:/Perl/site/lib/XMLRPC/Transport/TCP.pm
C:/Perl/site/lib/auto/SOAP/Lite/.packlist
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Publicidad

Re: Soap::lite dando problemas al iniciar cliente

Notapor ileiva » 2011-05-15 17:37 @776

Hola.

El error que manda es que no está instalado el módulo Class::Inspector.

Prueba instalándolo.

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. cpan Class::Inspector
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Saludos.
Avatar de Usuario
ileiva
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2011-04-23 03:25 @184
Ubicación: Santiago, Chile

Re: Soap::lite dando problemas al iniciar cliente

Notapor explorer » 2011-05-15 17:58 @790

Si está en Windows, con ActiveState, es mejor que use PPM para hacer la instalación de los módulos que le faltan...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Soap::lite dando problemas al iniciar cliente

Notapor ileiva » 2011-05-15 18:36 @816

explorer escribiste:Si está en Windows, con ActiveState, es mejor que use PPM para hacer la instalación de los módulos que le faltan...


Cierto. La costumbre...
Avatar de Usuario
ileiva
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2011-04-23 03:25 @184
Ubicación: Santiago, Chile

Re: Soap::lite dando problemas al iniciar cliente

Notapor scout » 2011-05-15 18:38 @818

síííí, muchas gracias...

O sea, que para redondear el tema ¿¿¿se van agregando las funciones en el servicio para que desde los clientes se puedan ir llamando...???
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

error con SOAP::Lite autodispatch

Notapor scout » 2011-05-16 02:53 @162

Ahora un paso mas, ya logré el servicio en un servidor remoto, pero me da un error cuando pruebo el autodispatch que no comprendo...

Está, digamos, usando el siguiente código. Da el siguiente error y no entiendo de qué va el error teniendo en el servidor las dos funciones... Sin el autodispatch todo funciona correctamente.

use SOAP::Lite +autodispatch=>
uri => 'http://x.x.x.x:80/servidor',
proxy => 'http://x.x.x.x:80/cgi-bin/servidor.pl';
print "La suma de 3 y 4 es ".sumador(4,3)." y su resta".restador(4,3)." \n";

error
Use of inherited AUTOLOAD for non-method main::sumador() is deprecated at c:\cliente.pl line 21.
Use of inherited AUTOLOAD for non-method main::restador() is deprecated at c:\cliente.pl line 21.

La suma de 3 y 4 es 7 y su resta
1
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Re: error con autodispatch

Notapor ileiva » 2011-05-16 03:34 @190

Según leí en algunos sitios[1][2], existen dos posibles maneras de arreglar dicho error.

Una es usar la sintaxis completa al llamar a los métodos[1]. En este caso, en vez de llamar a sumador(4, 3), debería ser SOAP->sumador(4, 3).

La otra es usar dispatch_from en vez de autodispatch. Más información en [2].

No he probado las soluciones así que no sé si funcionan. Prueba y nos cuentas qué tal te fue.

Saludos.

[1] http://guide.soaplite.com/ (Busca por AUTOLOAD)
[2] http://search.cpan.org/~mkutter/SOAP-Li ... LESHOOTING (donde dice +autodispatch doesn't work in Perl 5.8)
Avatar de Usuario
ileiva
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2011-04-23 03:25 @184
Ubicación: Santiago, Chile

Re: Soap::lite dando problemas al iniciar cliente

Notapor ileiva » 2011-05-16 03:37 @193

scout escribiste:O sea, que para redondear el tema ¿¿¿se van agregando las funciones en el servicio para que desde los clientes se puedan ir llamando...???


No tengo experiencia en dicho módulo, pero eso pareciera ser.
Avatar de Usuario
ileiva
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2011-04-23 03:25 @184
Ubicación: Santiago, Chile

Re: Soap::lite dando problemas al iniciar cliente

Notapor scout » 2011-05-16 03:53 @204

La 1 funciona perfectamente. Paso cómo quedaría... por si alguno le pasa en el futuro

use SOAP::Lite +autodispatch=>
uri => 'http://192.168.1.x:80/servidor',
proxy => 'http://192.168.1.x:80/cgi-bin/servidor.pl';
print "La suma de 3 y 4 es ".SOAP->sumador(4,3)." y su resta".SOAP->restador(4,3)." \n";


Muchas gracias, esto de los servicios realmente está muy interesante...
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

envio de array con soap cliente servidor...

Notapor scout » 2011-05-16 14:18 @637

Consulta. Dentro del script que consulta una base de datos que trae el código quiero guardar su contenido en un array para luego retornarlo al cliente.pl y poder imprimirlo en pantalla…

Mi duda es cómo si estoy guardando correctamente los valores en el array y retornándolos bien, el mismo código con un print $codigo; refleja todos los valores deseados pero con SOAP no se me ocurre cómo realizar pruebas de contenido del array antes del envío desde el servidor o en el cliente…

Agradeceré al que pueda darme una luz en el camino…

Al momento solo devuelve el primer o último de los resultados...


Código de servidor.pl

while (($codigo) = $sth->fetchrow_array) {
#push ( @arraycodigos, $codigo ) ;
@arraycodigos = $codigo ;
}
return @arraycodigos ;


código cliente

foreach my $valor (@$arraycodigos) {
print "$valor\n";
};
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Siguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 17 invitados