1

特定のスクリプトで、私はこれを書き込もうとしました:

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

「400 Bad Request」を取得しました。いくつか読んだ後、私はこれを試しました:

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

うまくいきましたが、これら2つは同じことをすべきだと思いました。ここで何が欠けていますか?HTTP::RequestLWP::UserAgentのドキュメントで何か誤解していますか?

LWP::UserAgent に何をしているかを出力するように依頼する方法はありますか?

4

1 に答える 1

0

これを行う1つの方法は次のとおりです。

#!/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");

LWP::UserAgent が行うすべての要求と応答を出力します。

于 2015-05-13T01:31:26.477 に答える