如何在Perl中从HTTPS链接获取JSON?

3
我找到了很多有关Perl和JSON的例子,使我对其有了更好的理解。
使用Perl进行简单的JSON解析的回答中提供的代码很好,下面的示例中也使用了这个代码。
我正在尝试从HTTPS链接中“获取”JSON,但我不确定原因。
如果我使用以下内容,则上述示例代码适用于我:
"http:..."

$trendsurl 类似,但是在 die 行中失败(添加了 $!):

'无法获取 https:... - 没有此文件或目录 在 json-simple.pl 的第 23 行'

如果我使用

"https:..."

为什么 https 失效,如何让其正常工作?
1个回答

5
你需要安装LWP:Protocol:https才能使HTTPS请求正常工作。如果你正在使用Ubuntu,那么你还需要安装build-essential libssl-dev。完成后,你应该能够发出HTTPS请求。
以下是通过HTTPS调用 Twitter 的片段:
#!/usr/bin/perl

 use LWP::UserAgent;
 use HTTP::Request;

 my $URL = 'https://www.twitter.com/';

 my $ua = LWP::UserAgent->new(ssl_opts => { verify_hostname => 1 });
 my $header = HTTP::Request->new(GET => $URL);
 my $request = HTTP::Request->new('GET', $URL, $header);
 my $response = $ua->request($request);

 if ($response->is_success){
     print "URL:$URL\nHeaders:\n";
     print $response->headers_as_string;
 }elsif ($response->is_error){
     print "Error:$URL\n";
     print $response->error_as_HTML;
 }

不要在RESTful中使用User-Agent,它会激活Keep-Alive并使您的连接保持3分钟不关闭。 - Mohannd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接