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)
Using perl Syntax Highlighting
use LWP::UserAgent;
use HTTP::Request::Common;
my $ua = LWP::UserAgent->new(
agent => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12',
);
my $response = $ua->request(
POST 'http://pagina.com/q.php',
{
comen => 'Comentario',
usuario => 'usuario',
},
'Host' => 'pagina.com',
'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Referer' => 'http://pagina.com/q.php',
);
if ($response->is_success) {
print $response->decoded_content; #
}
else {
die $response->status_line;
}
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
El módulo HTTP::Request::Common crea un objeto HTTP::Request, con este contenido:
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.