2012-06-29 12 views
10
use LWP::UserAgent; 
use Data::Dumper; 

my $ua = new LWP::UserAgent; 
$ua->agent("AgentName/0.1 " . $ua->agent); 
my $req = new HTTP::Request POST => 'http://example.com'; 
$req->content('port=8', 'target=64'); #problem 
my $res = $ua->request($req); 

print Dumper($res->content); 

¿Cómo puedo enviar varias partes de contenido usando $ req-> content? ¿Qué tipo de datos espera $ req-> content?Cómo PUBLICAR contenido con una solicitud HTTP (Perl)

Sólo envía la última.

Editar:

Encontrado si i formatearlo como 'port = 8 & target = 64' funciona. ¿Hay una mejor manera?

Respuesta

14
my $ua  = LWP::UserAgent->new(); 
my $request = POST($url, [ 'port' => 8, 'target' => 64 ]); 
my $content = $ua->request($request)->as_string(); 
+2

A pesar del código en la pregunta que me gustaría ir con un enfoque de programación orientada a objetos completo: 'mi $ ua = LWP :: UserAgent-> new(); my $ response = $ ua-> post ($ url, $ parámetro); mi $ contenido = $ respuesta-> as_string(); ' – dennis

1

La respuesta dada no funcionó para mí. Todavía tengo el mismo problema que OP.

La documentación para LWP::UserAgent quiere una referencia de matriz o hash.

Esto funciona:

my $url = 'https://www.google.com/recaptcha/api/siteverify'; 
my $ua  = LWP::UserAgent->new(); 

my %form; 
$form{'secret'}='xxxxxxxxxxxxxxxxxxxxxxx'; 
$form{'response'}=$captchaResponse; 

my $response = $ua->post($url, \%form); 
my $content = $response->as_string(); 
Cuestiones relacionadas