首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么LWP::UserAgent成功,而Mojo::UserAgent失败?

为什么LWP::UserAgent成功,而Mojo::UserAgent失败?
EN

Stack Overflow用户
提问于 2018-08-14 04:12:51
回答 1查看 122关注 0票数 1

如果我发出这样的请求:

代码语言:javascript
复制
my $mojo_ua = Mojo::UserAgent->new->max_redirects(5);

$mojo_ua->inactivity_timeout(60)->connect_timeout(60)->request_timeout(60);;
$mojo_ua->transactor->name('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36');

my $headers = {
           'Accept' => 'application/json',
           'Accept-Language' => 'en-US,en;q=0.5',
           'Connection' => 'keep-alive',
           'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
           'x-csrf-token' => 'Fetch',
           'Accept-Encoding' => 'gzip, deflate, br',
           'DataServiceVersion' => '2.0',
           'MaxDataServiceVersion' => '2.0',
           'Referer' => 'https://blah.blas.com/someThing.someThing'
         };

my $url = Mojo::URL->new('https://blah.blah.com/irj/go/sap/FOO_BAR_BAZ/');

my $tx = $mojo_ua->get($url, $headers);
$tx = $mojo_ua->start($tx);
my $res = $tx->result;

请求超时,但如果我接受完全相同的请求,以相同的方式构建并执行以下操作:

代码语言:javascript
复制
my $lwp_ua = LWP::UserAgent->new;

my $req = HTTP::Request->parse( $tx->req->to_string );
$req->uri("$url");
my $res = $lwp_ua->request($req);

它成功了。

在少数情况下,Mojo::UserAgent失败,而LWP::UserAgent使用完全相同的事务成功,这让我开始感到好奇。

你知道为什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-14 05:08:55

您的呼叫

代码语言:javascript
复制
$mojo_ua->get($url, $headers)

已发送HTTP请求并收到来自服务器的响应,出现错误或超时。你不需要打电话给我

代码语言:javascript
复制
$mojo_ua->start($tx)

同样,也应该删除该语句

如果您确实希望首先构建事务,然后对其执行start操作,则需要

代码语言:javascript
复制
my $tx = $mojo_ua->build_tx(GET => $url, $headers);
$tx    = $mojo_ua->start($tx);

但我看不出你有什么理由要这样做

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

https://stackoverflow.com/questions/51829914

复制
相关文章

相似问题

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