• Publicidad

Creando HTTP Header

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

Re: Creando HTTP Header

Notapor erv-Z » 2009-12-07 14:45 @656

O sea, enviar mensaje/contenido a las cabeceras HTTP.
erv-Z
Perlero nuevo
Perlero nuevo
 
Mensajes: 158
Registrado: 2009-07-25 13:00 @583

Publicidad

Re: Creando HTTP Header

Notapor explorer » 2009-12-07 15:10 @674

Las cabeceras no pueden enviar ni recibir nada. Las cabeceras pueden ser enviadas o recibidas.

Si quieres enviar las cabeceras recién creadas, te lo dije en el mensaje anterior, donde te comentaba lo de la petición GET: tienes ejemplos en el documento lwpcook. Por estos foros también hay algunos hilos de discusión, que hablan de este tema. Busca por UserAgent o HTTP::Request.

Puedes hacer tanto una petición GET como POST, pero depende del servidor si te responde correctamente a cada una de esas peticiones.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Creando HTTP Header

Notapor erv-Z » 2009-12-07 15:30 @687

Ok, voy dando idea; tengo este source:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use LWP::UserAgent;
  2. use HTTP::Request;
  3.  
  4. $pag = "http://pagina.com/q.php";
  5.  
  6.     my $ua = new LWP::UserAgent;
  7.     $ua->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12");
  8.  
  9.     my $get = new HTTP::Request GET => $pag;
  10.     $get->header(
  11.         'Host' => 'http://pagina.com',
  12.         'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  13.         'Connection' => 'keep-alive',
  14.         'Referer' => 'http://pagina.com/q.php',
  15.     my $fuente = $ua->request($get);
  16.     my $source = $fuente->content();
  17.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Ahora el problema es este, tengo este formulario.

Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
<FORM NAME="formulario" ACTION="q.php" METHOD="POST">
<INPUT TYPE="text" NAME="comen">
<INPUT TYPE="submit" VALUE="usuario" NAME="usuario">                   
</FORM>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Entonces lo que estoy pensando, es enviar el valor rellenado desde la cabeceras HTTP, o sea, enviar el comentario desde las cabeceras HTTP, estaba pensando hacer esto pero no funcionó:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use LWP::UserAgent;
  2. use HTTP::Request;
  3.  
  4. $pag = "http://pagina.com/q.php";
  5.  
  6.  
  7.     my $ua = new LWP::UserAgent;
  8.     $ua->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12");
  9.  
  10.     my $get = new HTTP::Request GET => $pag;
  11.     $get->header(
  12.         'Host' => 'http://pagina.com',
  13.         'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  14.         'Referer' => 'http://pagina.com/q.php',
  15.         'usuario' => 'anon');
  16.     my $fuente = $ua->request($get);
  17.     my $source = $fuente->content();
  18.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
erv-Z
Perlero nuevo
Perlero nuevo
 
Mensajes: 158
Registrado: 2009-07-25 13:00 @583

Re: Creando HTTP Header

Notapor explorer » 2009-12-07 16:12 @716

El Host: está mal escrito... sobra todo eso del http://. Hay que poner el nombre del host, tal cual.

Otra cosa... el formulario necesita que la petición sea POST, no GET.

Por la sencillez del formulario, es mucho más recomendable usar HTTP::Request::Common:

(no probado)
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use LWP::UserAgent;
  2. use HTTP::Request::Common;
  3.  
  4. my $ua = LWP::UserAgent->new(
  5.     agent => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12',
  6. );
  7.  
  8. my $response = $ua->request(
  9.     POST 'http://pagina.com/q.php',
  10.     {
  11.         comen   => 'Comentario',
  12.         usuario => 'usuario',
  13.     },
  14.     'Host'    => 'pagina.com',
  15.     'Accept'  => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  16.     'Referer' => 'http://pagina.com/q.php',
  17. );
  18.  
  19. if ($response->is_success) {
  20.     print $response->decoded_content;  #
  21. }
  22. else {
  23.     die $response->status_line;
  24. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

El módulo HTTP::Request::Common crea un objeto HTTP::Request, con este contenido:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
$VAR1 = bless( {
                 '_content' => 'usuario=usuario&comen=Comentario',
                 '_uri' => bless( do{\(my $o = 'http://pagina.com/q.php')}, 'URI::http' ),
                 '_headers' => bless( {
                                        'content-type' => 'application/x-www-form-urlencoded',
                                        'accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                                        'content-length' => 32,
                                        'referer' => 'http://pagina.com/q.php',
                                        'host' => 'pagina.com'
                                      }, 'HTTP::Headers' ),
                 '_method' => 'POST'
               }, 'HTTP::Request' );
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
que, como ves, contiene todas las cabeceras, agrega el tipo de contenido y el contenido son los parámetros del formulario que queremos pasar al servidor.

Este objeto HTTP::Request se pasa al objeto LWP::UserAgent y hace la petición, devolviendo un objeto HTTP::Response, del que podemos saber si todo ha ido bien, y en ese caso, sacar el contenido de lo devuelto, decodificado.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Anterior

Volver a Básico

¿Quién está conectado?

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

cron