如何在perl中获取http和https返回码

时间:2014-06-02 17:40:23

标签: perl http https

我是perl的新手,任何帮助都将受到赞赏!!

我必须通过perl调用一些URL(在unix机器上).URLs是http和https

如果成功调用了URL,那么就可以创建一个日志文件,说明无法调用URL。

对于调用URL,我打算用于例如。

  exec 'firefox http://www.yahoo.com';

但是如何获取http和https请求状态代码?如果状态是200,那么确定其他错误..

请帮助!!

1 个答案:

答案 0 :(得分:4)

您应该使用HTTP客户端库,例如HTTP::TinyLWP::UserAgent,而不是使用像Firefox这样的浏览器。

例如:

#!/usr/bin/env perl

use strict;
use warnings;
use feature 'say';

use HTTP::Tiny;

my $Client = HTTP::Tiny->new();

my @urls = (
    'http://www.yahoo.com',
    'https://www.google.com',
    'http://nosuchsiteexists.com',
);

for my $url (@urls) {
    my $response = $Client->get($url);
    say $url, ": ", $response->{status};
}

哪个输出:

alex@yuzu:~$ ./return_status.pl 
http://www.yahoo.com: 200
https://www.google.com: 200
http://nosuchsiteexists.com: 599

如果要正确识别重定向状态代码(3XX),则必须将max_redirect参数设置为0.

alex@yuzu:~$ perl -MHTTP::Tiny -E 'say HTTP::Tiny->new(max_redirect => 0)->get("http://www.nestoria.co.uk/soho")->{status};'
301

如果您关心的只是成功,那么响应hashref包含成功'这个领域在成功时是真实的,在失败时是假的。

alex@yuzu:~$ perl -MHTTP::Tiny -E 'say HTTP::Tiny->new()->get("http://www.google.com")->{success};'
1