首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LWP::UserAgent - HTTP::Request

LWP::UserAgent - HTTP::Request
EN

Stack Overflow用户
提问于 2011-07-30 15:33:59
回答 3查看 3.1K关注 0票数 2

如果我这么做

代码语言:javascript
复制
#!/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方法

代码语言:javascript
复制
say $res->code;

是否有可能从HTTP::Request对象调用$res方法,或者需要显式地创建HTTP::Request对象?

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-30 16:03:55

HTTP::Request在内部由LWP::UserAgent使用,如果他们通过getpost-Methods返回它,那么已经太晚了,因为请求已经完成了。但是他们显然预见到了访问请求对象的需要,因此他们实现了回调,以便在发送请求之前修改请求:

代码语言:javascript
复制
$ua->add_handler(request_prepare => sub {
    my($request, $ua, $h) = @_;

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

因此,如果您需要访问请求对象,而不需要创建和设置请求对象,那么回调就是一种方法。

票数 2
EN

Stack Overflow用户

发布于 2011-07-30 17:26:54

要获取为您创建的请求对象,请执行以下操作:

代码语言:javascript
复制
my $response = $ua->get('http://www.example.com/');
my $request = ($response->redirects, $response)[0]->request;

只需自己创建一个请求对象可能更容易一些。

代码语言:javascript
复制
use HTTP::Request::Common qw( GET );
my $request = GET('http://www.example.com/');
my $response = $ua->request($request);
票数 5
EN

Stack Overflow用户

发布于 2011-07-30 16:04:55

您想要调用哪些HTTP::Request方法?在哪个请求对象上?$ua最后提出的请求

据我所知,LWP::get没有保存在任何地方创建/发送的最后一个请求。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6884163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档