如何使用LWP::UserAgent测试HTTP报头值



当我得到答案时,我可能会发布更多的问题,但是这里开始!

我目前正在尝试解决一个Perl脚本,我的大学曾经使用它来自动下载带有SAT分数数据的文件。

这个想法是阅读特定帐户中的电子邮件;提取循环号(在URL中使用);拼凑多个url;然后使用LWP::UserAgent从服务器获取文件,并对它们执行其他Perl操作。

在我的调查中,我已经确定手动输入URL(从而限制脚本由用户运行,每次替换循环号)实际上是有效的。

在检查返回的响应对象时,我注意到(首先)在失败的请求中缺少以下行:

'_uri_canonical' => $VAR1->{'_request'}{'_uri'}

但是它存在于成功的请求中。

如果你们中有谁能告诉我为什么不成功的请求中缺少这一行,我会感谢你的,但这不是我想问的。

我的问题是要进一步调查,看看为什么它被拒绝了。

LWP::UserAgent的文档中,我注意到:

LWP内部生成的错误响应将有"Client-Warning"头设置为值"Internal response"。如果您需要将这些内部响应与远程服务器实际生成的响应区分开来,则需要测试此头值。

我的问题:你如何实际测试头值?(原谅我的无知;我是学校IT系的实习生)

它实际上在标题中放置了各种消息,您可以通过以下方式获得:

if (my $cw = $response->header('Client-Warning')) {
   die("Internal error: $cwn");
}

Internal response仅在状态已经显示错误时使用。其他消息,如Redirect loop detectedMissing Authenticate header在其他时间使用。上面的代码将得到任何出现在那里的消息,而不仅仅是检查Internal response

使用LWP的标准方式如下

use strict;
use warnings;
use LWP;
my $ua = LWP::UserAgent->new;
my $resp = $ua->get('http://my.domain.co.uk/');
die $resp->status_line unless $resp->is_success;
my $content = $resp->decoded_content;

你需要知道什么?

相关内容

  • 没有找到相关文章

最新更新