2012-06-29 11 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); 

Come posso inviare più pezzi di contenuto utilizzando $ req-> contenuto? Che tipo di dati si aspettano $ req-> il contenuto?Come POST il contenuto con una richiesta HTTP (Perl)

Invia solo l'ultimo.

Edit:

Trovato se formatto piace 'port = 8 & target = 64' funziona. C'è un modo migliore?

risposta

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

Nonostante il codice nella questione mi piacerebbe andare con un approccio completo OOP: 'my $ ua = LWP :: UserAgent-> new(); my $ response = $ ua-> post ($ url, $ parameter); my $ content = $ response-> as_string(); ' – dennis

1

La risposta data non ha funzionato per me. Ho ancora avuto lo stesso problema di OP.

La documentazione per LWP::UserAgent vuole un riferimento hash o array.

Questo funziona:

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();