2

私がこれをするなら

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

my $ua = LWP::UserAgent->new();
my $res = $ua->get( 'http://www.perl.org' );

HTTP::Responseこのようなメソッドを呼び出すことができます

say $res->code;

HTTP::Requestオブジェクトからメソッドを呼び出すことはどういうわけか可能ですか、それともオブジェクトを明示的$resに作成する必要がありますか?HTTP::Request


my $ua = LWP::UserAgent->new();

my $method;

my $res = $ua->get( 'http://www.perl.org' );

$ua->add_handler( request_prepare => sub { my( $request, $ua, $h ) = @_; $method = $request->method; },  );

say $method; # Use of uninitialized value $method in say
4

3 に答える 3

5

作成されたリクエストオブジェクトを取得するには:

my $response = $ua->get('http://www.example.com/');
my $request = ($response->redirects, $response)[0]->request;

リクエストオブジェクトを自分で作成するだけの方が簡単かもしれません

use HTTP::Request::Common qw( GET );
my $request = GET('http://www.example.com/');
my $response = $ua->request($request);
于 2011-07-30T17:26:54.627 に答える
2

HTTP::Request内部で使用され、または-MethodsLWP::UserAgentを介して返される場合は、要求がすでに行われているため、すでに手遅れになります。しかし、彼らは明らかにリクエストオブジェクトにアクセスする必要性を予見していたので、コールバックを実装して、リクエストを送信する前に変更できるようにしました。getpost

$ua->add_handler(request_prepare => sub {
    my($request, $ua, $h) = @_;

    # $request is a HTPP::Request
    $request->header("X-Reason" => "just checkin");
});

したがって、リクエストオブジェクトを作成して設定せずにアクセスする必要がある場合は、コールバックが最適です。

于 2011-07-30T16:03:55.053 に答える
1

どのHTTP::Requestメソッドを呼び出しますか?そして、どのリクエストオブジェクトに?$ua?による最後のリクエスト

私の知る限りLWP::get、最後に作成/送信されたリクエストはどこにも保存されません。

于 2011-07-30T16:04:55.503 に答える