2013-10-03 5 views
1

Dans un certain script que j'essayé d'écrire ceci:LWP :: UserAgent et HTTP :: Demande d'une requête POST

my $ua = LWP::UserAgent->new; 
my $res = $ua->post($url, Content => $data); 

et obtenu "400 Bad Request". Après quelques lectures que j'ai essayé ceci:

my $ua = LWP::UserAgent->new; 
my $req = HTTP::Request->new('POST', $url); 
$req->content($data); 
my $res = $ua->request($req); 

et cela a fonctionné, mais je pensais que ces deux devraient faire la même chose. Qu'est-ce que j'oublie ici? Ai-je mal compris quelque chose dans la documentation de HTTP::Request et LWP::UserAgent?

Existe-t-il un moyen de demander à LWP :: UserAgent d'imprimer ce qu'il fait?

Répondre

0

est ici une façon de le faire:

#!/usr/bin/perl 
use strict; 
use warnings; 
use LWP::UserAgent; 

{ 
    no strict "refs"; 
    no warnings "redefine"; 
    my $orig_sub = \&LWP::UserAgent::send_request; 
    *{"LWP::UserAgent::send_request"} = sub { 
     my ($self, $request) = @_; 
     print $request->as_string . "\n"; 
     my $response = $orig_sub->(@_); 
     print $response->as_string . "\n"; 
     return $response; 
    }; 
} 

my $a = LWP::UserAgent->new; 
my $response = $a->get("http://google.com"); 

Il imprimera toutes les demandes et les réponses qui ne LWP :: UserAgent.

Questions connexes