我正在尝试使用VMware Perl库(它似乎在ESXi主机上调用SOAP服务)编写Linux机箱和ESXi主机之间的某些交互。
我收到一个错误,我无法找到解决方案:Undefined subroutine &LWP::Protocol::https::Socket::can_read called at /usr/local/share/perl5/LWP/Protocol/http.pm line 22
我目前正在运行Net-HTTP-6.03。我尝试使用Net-HTTP-6.05,但它使基于Web的调用非常慢(后续的调用最终也失败了,而不是大约1.2MB的XML作为错误消息) - 各种论坛建议只能通过还原来解决到6.03(通过cpan install GAAS/Net-HTTP-6.03.tar.gz
)。
我的代码的关键如下:
use VMware::VIRuntime;
my $context = {
options => ParseOptions(), # result of using GetOpts::Long to parse command-line
session => undef
};
$ENV{PERL_NET_HTTPS_SSL_SOCKET_CLASS} = "Net::SSL"; # Suppresses SSL_VERIFY_NONE
if ($context->{options}->{'ignore-ssl-errors'}) {
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0; # Ignores certificate errors
}
## next line fails
$context->{session} = Vim::login(
service_url => $context->{options}->{url},
username => $context->{options}->{username},
password => $context->{options}->{password}
);
我(可以)需要做些什么才能使其正常工作?
答案 0 :(得分:1)
我知道了。我需要从旧版本重新安装Bundle :: LWP,而不仅仅是Net-HTTP。没有它,我让LWP v6.05尝试与Net-HTTP v6.03对话。
一旦我意识到LWP == libwww-perl(是的,我 新),我找到了我需要的整体软件包:
cpan install GAAS/libwww-perl-6.03.tar.gz
答案 1 :(得分:0)
转载了LWP 6.05和Net :: HTTP 6.01,这是MacPorts在撰写本文时所安装的鸡尾酒。将Net :: HTTP升级到6.06(当前)解决了它:
sudo cpan Net::HTTP