• Publicidad

Cliente Perl consumiendo servicio Java usando WSDL

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

Re: Cliente Perl consumiendo servicio Java usando WSDL

Notapor scout » 2011-06-10 02:50 @159

A ver me voy acercando, utilicé el WSDL y cgi del compañero ya que la configuración es la misma respecto al servidor local... pero me da un error 500. A ver si me estaré olvidando de algo... Bueno, al que pueda darme una mano se lo agradeceré...

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
servidor :                     localhost
archivo cgi :                  cgiserver.cgi
Dirección del cgi-bin :        http://localhost/cgi-bin/cgiserver.cgi
Dirección del WSDL:            http://localhost/panterazowsdl.wsdl
Cliente utilizado desde perl:  ( ver debajo )
Error generado :               ( debajo del código cliente )
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use SOAP::Lite +trace => [qw(debug)];
  2. my $result ;
  3. print "Connecting to Hello Service...\n";
  4. $user = 'pedro';
  5. $pass=  'contrapedro';
  6. my $client = SOAP::Lite->service( 'http://localhost/panterazowsdl.wsdl');
  7.  
  8. print $result = $client->InfoOnline($user,$pass);
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


error

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
SOAP::Transport::HTTP::Client::send_receive: POST http://localhost/cgi-bin/cgiserver.cgi HTTP/1.1
Accept: text/xml
Accept: multipart/*
Accept: application/soap
Content-Length: 642
Content-Type: text/xml; charset=utf-8
SOAPAction: ""

<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns1="http://localhost/Servidor" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><tns1:InfoOnline><usuario xsi:type="xsd:string">pedro</usuario><password xsi:type="xsd:string">contrapedro</password></tns1:InfoOnline></soap:Body></soap:Envelope>
SOAP::Transport::HTTP::Client::send_receive: HTTP/1.1 500 Internal Server Error
Connection: close
Date: Fri, 10 Jun 2011 07:09:57 GMT
Server: Apache/2.2.4 (Win32) PHP/5.2.3
Content-Length: 625
Content-Type: text/html; charset=iso-8859-1
Client-Date: Fri, 10 Jun 2011 07:09:57 GMT
Client-Peer: 127.0.0.1:80
Client-Response-Num: 1
Title: 500 Internal Server Error

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>500 Internal Server Error</title>
</head><body>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error or
misconfiguration and was unable to complete
your request.</p>
<p>Please contact the server administrator,
 and inform them of the time the error occurred,
and anything you might have done that may have
caused the error.</p>
<p>More information about this error may be available
in the server error log.</p>
<hr>
<address>Apache/2.2.4 (Win32) PHP/5.2.3 Server at localhost Port 80</address>
</body></html>
500 Internal Server Error at C:\javaproyectos2011\perlsoap\clientepanterazo.pl line 8
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2011-06-10 05:44 @281, editado 1 vez en total
Razón: Marcas de texto y Perl
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Publicidad

Re: Cliente Perl consumiendo servicio Java usando WSDL

Notapor explorer » 2011-06-10 05:47 @283

Si es un CGI... ¿no deberías sacar cabeceras HTTP antes del resultado?
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: Cliente Perl consumiendo servicio Java usando WSDL

Notapor scout » 2011-06-10 09:13 @426

No entiendo lo que me dices. Disculpa, tengo poca experiencia en CGI y clientes WSDL...
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Re: Cliente Perl consumiendo servicio Java usando WSDL

Notapor panterozo » 2011-06-10 11:30 @521

scout escribiste:<p>More information about this error may be available
in the server error log.</p>

¿Y qué es lo que dice el log del servidor cuando haces la llamada?

Tienes que verificar además que el cgiserver.cgi tenga los permisos correspondientes, pero lo que diga el log es lo primordial ;) ... Lo probé tal cual en mi máquina, el mismo WSDL y el mismo cliente, y mi servidor CGI es así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2.  
  3. use SOAP::Transport::HTTP;
  4.  
  5. SOAP::Transport::HTTP::CGI
  6.         -> dispatch_to('Servidor')
  7.         -> handle;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y el package Servidor.pm

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. package Servidor;
  2. sub InfoOnline {
  3.         my $class = shift;
  4.         my ($a,$b) = @_;
  5.         return SOAP::Data->name(InfoOnlineResult =>
  6.                \SOAP::Data->value(...
  7. }
  8. 1;
  9.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


y mi resultado ;)

Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
  1. <?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><InfoOnlineResponse xmlns="http://localhost/Servidor"><InfoOnlineResult><data1><string xsi:type="xsd:string">0</string><string xsi:type="xsd:string">0</string><string xsi:type="xsd:string">0</string><string xsi:type="xsd:string">0</string></data1><data2><string xsi:type="xsd:string">0</string><string xsi:type="xsd:string">0</string><string xsi:type="xsd:string">0</string><string xsi:type="xsd:string">0</string></data2><data3><string xsi:type="xsd:string">0</string><string xsi:type="xsd:string">0</string><string xsi:type="xsd:string">0</string><string xsi:type="xsd:string">0</string></data3><data4><string xsi:type="xsd:string">0</string><string xsi:type="xsd:string">0</string><string xsi:type="xsd:string">0</string><string xsi:type="xsd:string">0</string></data4></InfoOnlineResult></InfoOnlineResponse></soap:Body></soap:Envelope>
  2.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Veamos qué es lo que dice el log ;)
panterozo
Perlero nuevo
Perlero nuevo
 
Mensajes: 160
Registrado: 2010-01-26 08:36 @400

Re: Cliente Perl consumiendo servicio Java usando WSDL

Notapor scout » 2011-06-11 01:33 @106

El error del log del Apache, cuando ejecuto el cliente, es este...


[Sat Jun 11 08:29:05 2011] [error] [client 127.0.0.1] C:/AppServ/www/cgi-bin/cgiserver.cgi is not executable; ensure interpreted scripts have "#!" first line
[Sat Jun 11 08:29:05 2011] [error] [client 127.0.0.1] (9)Bad file descriptor: don't know how to spawn child process: C:/AppServ/www/cgi-bin/cgiserver.cgi

¿¿ Y tu cgiserver.cgi cómo es entero ??


Yo lo tengo así... según los últimos cambios.

use SOAP::Transport::HTTP;
SOAP::Transport::HTTP::CGI -> dispatch_to('Servidor') -> handle;
package Servidor;

sub InfoOnline{
my ($user,$pass) = @_;
return "Lo que vayamos a retornar";
}
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Re: Cliente Perl consumiendo servicio Java usando WSDL

Notapor explorer » 2011-06-11 02:56 @164

El error es claro: no has puesto la línea del shebang.
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: Cliente Perl consumiendo servicio Java usando WSDL

Notapor scout » 2011-06-11 14:34 @648

En efecto, explorer, faltaba
#!C:\perl\bin\perl.exe

:cry: :cry: :cry: :cry: :cry: :cry: :cry:

Estoy a punto de llorar: el cliente Perl con el WSDL funcionó. Es más, estoy llorando de felicidad... Gracias, explorer y panterozo... Ahora ya sabiendo que funciona Perl --> Perl, probaré Perl --> cliente Java.

Panterozo y explorer: en algún momento prueben si quieren el generar un servicio en Java con NetBeans, por favor, y veréis los poco minutos que lleva generar el WSDL y sus pantallas de test. No tengo conocimiento si para Perl hay algún IDE que haga lo mismo...

Script Output:
Executing file : C:\javaproyectos2011\perlsoap\clientepanterazo.pl

SOAP::Transport::HTTP::Client::send_receive: POST http://localhost/cgi-bin/cgiserver.cgi HTTP/1.1
Accept: text/xml
Accept: multipart/*
Accept: application/soap
Content-Length: 642
Content-Type: text/xml; charset=utf-8
SOAPAction: ""

<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns1="http://localhost/Servidor" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><tns1:InfoOnline><usuario xsi:type="xsd:string">pedro</usuario><password xsi:type="xsd:string">contrapedro</password></tns1:InfoOnline></soap:Body></soap:Envelope>
SOAP::Transport::HTTP::Client::send_receive: HTTP/1.1 200 OK
Connection: close
Date: Sat, 11 Jun 2011 19:24:14 GMT
Server: Apache/2.2.4 (Win32) PHP/5.2.3
Content-Length: 512
Content-Type: text/xml; charset=utf-8
Client-Date: Sat, 11 Jun 2011 19:24:15 GMT
Client-Peer: 127.0.0.1:80
Client-Response-Num: 1
SOAPServer: SOAP::Lite/Perl/0.712

<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><InfoOnlineResponse xmlns="http://localhost/Servidor"><s-gensym3 xsi:type="xsd:string">Lo que vayamos a retornar</s-gensym3></InfoOnlineResponse></soap:Body></soap:Envelope>

Connecting to Hello Service...
Lo que vayamos a retornar
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Re: Cliente Perl consumiendo servicio Java usando WSDL

Notapor explorer » 2011-06-11 15:28 @686

Como ya he dicho en otras ocasiones, a mi Java ya no me sirve para nada.

De hecho, es muy posible que este sea el último año en que demos soporte de Java en nuestro servidor de Internet... después de 12 años de servicio, nos ha dado muchos más problemas que beneficios.
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: Cliente Perl consumiendo servicio Java usando WSDL

Notapor scout » 2011-06-11 17:58 @790

No confundamos, solo sugiero comparar la forma en la que Netbeans permite generar un servicio y archivo WSDL es la única forma de poder comparar y sacar cada uno sus puntos de vista, no estoy valorando un lenguaje ya que me considero novato, solo digo que sería bueno poder contar con una manera similar para crear servicios y también preguntaba si había algún IDE que permita hacer lo mismo con Perl.
scout
Perlero nuevo
Perlero nuevo
 
Mensajes: 228
Registrado: 2009-10-28 13:50 @618

Re: Cliente Perl consumiendo servicio Java usando WSDL

Notapor explorer » 2011-06-11 18:38 @818

Yo no conozco ningún IDE que haga eso mismo para Perl.

Más o menos, estoy un poco al tanto de lo que pasa en la comunidad Perl, y apenas se oye nada al respecto de usar SOAP/WSDL y demás.

El año pasado, un programador anunció el soporte de Perl para Netbeans, pero era solo para programar en Perl dentro de Netbeans. Pero parece que la mayoría usan para eso eclipse + EPIC.

Hacer que un servidor nos dé una respuesta en función de un método y de unos argumentos se puede hacer de muchas maneras, no solo con SOAP y WSDL. Está RPC::XML, GRID::Machine... pero es que, incluso un CGI o CGI::Application podría valer... todo es cuestión de ponerse de acuerdo en el protocolo.

Solo hay que ver las API de Amazon, Google, Facebook...

Yo mismo lo estoy haciendo, para un proyecto personal, con JSON.
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

AnteriorSiguiente

Volver a Básico

¿Quién está conectado?

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