我正在尝试从远程服务器下载图像,当我通过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。
答案 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
)
}