我创建了一个Perl脚本来运行https任务。当我运行它时,我得到错误LWP::Protocol::https
未安装。
我不能弄清楚,或找到一个教程或命令,究竟如何安装LWP::Protocol::http
。有人知道如何安装吗?安装LWP
非常简单。
我已经安装了LWP
和Crypt-SSLeay
,但我仍然得到错误。下面是我的代码:
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
# set custom HTTP request header fields
my $req = HTTP::Request->new(PUT => "https://thesite.com");
$req->header('Authorization' => 'myauth');
$req->header('Accept' => 'JSON:Application/JSON');
$req->header('Content-Type' => 'JSON:Application/JSON');
$req->header('Host' => 'api.thesite.com');
$req->content('Text' => 'thetext');
my $resp = $ua->request($req);
if ($resp->is_success) {
my $message = $resp->decoded_content;
print "Received reply: $message\n";
}
else {
print "HTTP POST error code: ", $resp->code, "\n";
print "HTTP POST error message: ", $resp->message, "\n";
}
字符串
4条答案
按热度按时间cnh2zyt31#
sudo yum install perl-LWP-Protocol-https
为我解决问题。vfhzx4xs2#
运行
sudo cpan install LWP::Protocol::https
为我解决了这个问题。0mkxixxg3#
如果你得到这个错误:
在@INC中找不到LWP/Protocol/https.pm(@INC包含:/etc/cxs /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .)at(eval 5)line 2.
您需要安装
LWP::Protocol::https
,例如使用:字符串
ukqbszuj4#
很久以前,
LWP
支持HTTPS。然后,in 6.02 (in 2011),他们分拆了LWP::Protocol::https
。如果你的程序是在一个古老的系统上设置的,而你又升级了,这个变化可能会让你绊倒。由于Perl没有现成的SSL支持,因此使用一个缺少所需内容的协议助手是没有意义的(请记住,HTTPS在当时并不普遍)。作为一个单独的模块,更容易设置所有内容。
现在,这是诀窍。
LWP::Protocol::https
需要IO::Socket::SSL
,IO::Socket::SSL
需要Net::SSLeay,Net::SSLeay需要openssl。如何安装取决于你自己,如果你的平台有一个现成的软件包,那可能是最好的(因为如果你知道你不想这样,你就不太可能问你的问题)。如果你想自己做整个链,从openssl开始。一旦分类,您就可以安装所需的模块,其余的先决条件将自行解决:
字符串
顺便说一句,旧的Perl实践并不包括使用您知道依赖的所有模块。在本例中,您以前没有声明
LWP::Protocol::https
的依赖项,因为您知道它随LWP
一起提供。现在最好是显式地声明您需要的所有东西,即使您知道某些模块来自同一个发行版。也许在未来的某个时候,它们会出现在不同的发行版中。虽然我现在使用
Mojo::UserAgent
来处理所有这些,但我还是要添加显式依赖项,即使LWP
在内部处理所有这些。这使得静态分析更容易一些:型