我想在Perl脚本中下载文件。
如果下载正常,这样可以正常工作,
use File::Fetch;
$ff = File::Fetch->new(uri => 'http://some.where.com/dir/a.txt');
$where = $ff->fetch() or die $ff->error;
如果出现错误,我想查看http-response标头。我怎么能这样做?
答案 0 :(得分:1)
从File :: Fetch error handling documentation和source判断,您获得的是一个包含错误详细信息的字符串(例如,在您的示例中通过$ff->error
)。根据用于执行实际提取的底层模块,您可能能够确定HTTP响应信息并将其解析出来。例如,如果File :: Fetch使用LWP,则以下示例错误在错误消息中包含HTTP 500:
提取失败! HTTP响应:500内部服务器错误[500不能 在fetch.pl第8行连接到some.where.com:80(错误的主机名)]。
请注意,如果您尝试从错误字符串中解析,您应该确定您知道正在使用哪个底层模块进行提取(例如lwp,httptiny,wget等),因为错误消息格式是不一样。
如果HTTP响应对您来说非常重要,那么切换到类似LWP的内容可能更有意义,其中此信息以编程方式一致且可靠地可用,而不必担心解析(例如通过专用response object在LWP的情况下。)
答案 1 :(得分:0)
如果仅使用HTTP URI,则以下代码应该有效。
use HTTP::Tiny;
$http = HTTP::Tiny->new();
$response = $http->mirror( $uri, $file );
use Data::Dumper;
die Dumper($response) unless $response->{'success'};