簡體   English   中英

LWP :: UserAgent - HTTP :: Request

[英]LWP::UserAgent - HTTP::Request

如果我這樣做

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

是否有可能從$res對象調用HTTP::Request方法或者需要顯式創建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

獲取為您創建的請求對象:

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

HTTP::RequestLWP::UserAgent在內部使用,如果他們通過getpost -Methods返回它,那么因為請求已經完成已經太晚了。 但是他們顯然已經預見到需要訪問請求對象,因此他們實現了回調,因此您可以在發送請求之前修改請求:

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

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

因此,如果您需要訪問請求對象而不創建它並進行設置 - 回調是可行的方法。

您要調用哪種HTTP::Request方法? 以及哪個請求對象? $ua的最后一個請求?

據我所知, LWP::get不保存在任何地方創建/發送的最后一個請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM