• Publicidad

Problema con get() del LWP::Simple (antes funcionaba)

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

Problema con get() del LWP::Simple (antes funcionaba)

Notapor MARKO » 2019-05-16 00:58 @082

Saludos, Perl en español.

En julio de 2018 creé una aplicación que obtenía un XML de cierta página y luego lo convertía en una estructura hash para facilitar su análisis.

La misma dejó de funcionar por lo que revisé la página y comprobé que la misma funciona correctamente; por lo anterior revisé mi código y me encontré que la parte que transforma cualquier XML en hash funciona correctamente.

Logré comprobar que la parte que no está funcionando es la línea que dice my $cadena_xml = get($url);

Adjunto un trozo de código que duplica el problema:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use strict;
  2. use warnings;
  3. use LWP::Simple;
  4. use XML::Simple;
  5.  
  6. system("cls");
  7.  
  8. my $url = 'https://www.w3schools.com/xml/note.xml';            
  9. my $cadena_xml = get($url);
  10.  
  11. my $ref_estructura = XMLin($cadena_xml);
  12.  
  13. use Data::Dumper::Simple;
  14. warn Dumper($ref_estructura);
  15.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Al correr el código sale lo siguiente:

Could not find ejemplo.xml in C:\Users\jarias\Desktop\ at C:\Users\jarias\Desktop\ejemplo.pl line 11


¿Qué podría hacer para que volviera a funcionar?

Gracias por adelantado.
MARKO
Perlero nuevo
Perlero nuevo
 
Mensajes: 86
Registrado: 2012-01-10 22:34 @982

Publicidad

Re: Problema con get() del LWP::Simple (antes funcionaba)

Notapor explorer » 2019-05-16 11:01 @500

A mi sí que me funciona.
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
$ref_estructura = {
                    'to' => 'Tove',
                    'heading' => 'Reminder',
                    'from' => 'Jani',
                    'body' => 'Don\'t forget me this weekend!'
};
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Es posible que lo que te falte es el soporte para el protocolo HTTPS.
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: Problema con get() del LWP::Simple (antes funcionaba)

Notapor MARKO » 2019-05-16 12:14 @551

Hola, explorer, gracias por la respuesta rápida.

explorer escribiste:Es posible que lo que te falte es el soporte para el protocolo HTTPS.

Lo extraño es que antes me funcionaba perfectamente y a todos mis compañeros también.

¿Qué cambios crees que habrá sucedido como para que ese soporte de HTTPS ya no lo tenga?

¿Qué sería prudente comentarle a la gente de IT?
MARKO
Perlero nuevo
Perlero nuevo
 
Mensajes: 86
Registrado: 2012-01-10 22:34 @982

Re: Problema con get() del LWP::Simple (antes funcionaba)

Notapor explorer » 2019-05-16 17:54 @787

Es muy extraño que deje de funcionar así.

Las razones que se me ocurren:

* existe algún tipo de cortafuegos entre tu equipo y el destino que impide las conexiones 443 (HTTPS).
* se ha actualizado el Perl y no se ha incluido en la instalación el paquete LWP::Protocol::https

¿Has probado con otras URL diferentes?
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: Problema con get() del LWP::Simple (antes funcionaba)

Notapor MARKO » 2019-05-16 18:08 @797

Cambios con los cuales funcionó:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use strict;
  2. use warnings;
  3. use HTTP::tiny;
  4. use XML::Simple;
  5.  
  6. system("cls");
  7.  
  8. my $url = 'https://www.w3schools.com/xml/note.xml';            
  9.  
  10. my $ref_xml = HTTP::Tiny->new->get($url);
  11.  
  12. my $cadena_xml = ${$ref_xml}{'content'};
  13.  
  14. my $ref_estructura = XMLin($cadena_xml);
  15.  
  16. use Data::Dumper::Simple;
  17. warn Dumper($ref_estructura);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Usando la librería HTTP::tiny y haciendo unos cuantos cambios en el manejo volvió a funcionar el script. Al crear el ejecutable me daba error y me decía que tenía que instalar IO::Socket::SSL y NET::SSLeay (los cuales ya estaban instalados) por lo cual agregue las lineas
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use IO::Socket::SSL;
  2. use NET::SSLeay;
  3.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y al crear el ejecutable funcionó de maravilla.
MARKO
Perlero nuevo
Perlero nuevo
 
Mensajes: 86
Registrado: 2012-01-10 22:34 @982


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado