perl getstore给出错误500。但可以通过wget或网络浏览器下载

时间:2018-03-21 16:19:48

标签: perl

我正在尝试从远程服务器下载图像,当我通过perl getstore执行此操作时,我收到错误500。我需要使用getstore。它适用于其他主机,但适用于此提供商。

use LWP::Simple;   
my $url      = "http://shop.xeptor.co.uk/imgs/cef4cbbe-d86e-420e-aec6-4371d7e9b2bc/250/250/2262497R4xtrep.jpg";
my $filename = "test.jpg";
my $rc = getstore($url, $filename);
if (is_error($rc)) {
  die "getstore of <$url> failed with $rc";
}

我可以通过wget或网页浏览器下载图片,而不是通过getstore。

2 个答案:

答案 0 :(得分:0)

该图片的实际网址以https://开头。当您在http://上请求时,浏览器(或LWP :: UserAgent)会自动重定向到URL的安全版本。

它不是特别容易找到,但是LWP附带了一个README.SSL文件,它解释了如何为LWP安装添加SSL支持。

基本上,您只需安装LWP::Protocol::https即可。一切都将有效。

答案 1 :(得分:0)

如果您将程序更改为使用LWP::UserAgent#mirror,那么您将获得正确的error reporting,而不仅仅是模糊的状态代码。

use LWP::UserAgent qw();
my $ua = LWP::UserAgent->new;
my $res = $ua->mirror(
    'http://shop.xeptor.co.uk/imgs/cef4cbbe-d86e-420e-aec6-4371d7e9b2bc/250/250/2262497R4xtrep.jpg',
    'test.jpg',
);
if ($res->is_error) {
    printf(
        "mirror failed.\nStatus: %s\nContent:\n%s\n\nFull response:\n%s\n",
        $res->status_line,
        $res->content,
        $res->as_string
    )
}