我是 Perl 新手,任何帮助将不胜感激!
我必须通过 perl 调用一些 URL(在 unix 机器上)。URL 都是 http 和 https
如果 URL 被成功调用,那么就没有问题,否则创建一个日志文件,指出无法调用 URL。
为了调用 URL,我想使用例如
exec 'firefox http://www.yahoo.com';
Run Code Online (Sandbox Code Playgroud)
但是如何获取http和https请求状态码呢?类似如果状态为 200,则确定,否则错误..
请帮忙!!
您应该使用 HTTP 客户端库,例如HTTP::Tiny或LWP::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};
}
Run Code Online (Sandbox Code Playgroud)
哪个输出:
alex@yuzu:~$ ./return_status.pl
http://www.yahoo.com: 200
https://www.google.com: 200
http://nosuchsiteexists.com: 599
Run Code Online (Sandbox Code Playgroud)
如果您想正确识别重定向状态代码 (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
Run Code Online (Sandbox Code Playgroud)
如果您关心的只是成功,那么响应 hashref 包含一个“成功”字段,成功时该字段为 true,失败时为 false。
alex@yuzu:~$ perl -MHTTP::Tiny -E 'say HTTP::Tiny->new()->get("http://www.google.com")->{success};'
1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3925 次 |
| 最近记录: |