以下代码......
my $user_agent = LWP::UserAgent->new;
my $request = HTTP::Request->new(GET => $url);
my $response = $user_agent->request($request);
if ($response->is_success) {
print "OK\n";
} else {
die($response->status_line);
}
..将失败..
500 Can't connect to <hostname> (Bad hostname '<hostname>')
..如果$ url中的主机名是仅IPv6地址(即:存在AAAA
条记录,但没有A
条记录。
我的问题是:
A
与AAAA
)/“prefer-IPv6-over-IPv4”配置LWP设置(AAAA
vs 。A
)?答案 0 :(得分:12)
看起来你只需要使用Net::INET6Glue::INET_is_INET6。引用它的例子:
use Net::INET6Glue::INET_is_INET6;
use LWP::Simple;
print get( 'http://[::1]:80' );
print get( 'http://ipv6.google.com' );
答案 1 :(得分:2)
我相信您必须更改模块才能使用IPV6网络模块。默认情况下,它未启用此功能:http://eintr.blogspot.com/2009/03/bad-state-of-ipv6-in-perl.html。我不相信有一些像“prefer-ipv6”这样简单的东西
答案 2 :(得分:1)
Debian Wheezy(perl 5.14)
工作愉快:
use LWP::Simple;
print get( 'http://ip6-localhost:80' );
不能正常工作(1)
use LWP::Simple;
print get( 'http://[::1]:80' );
无法正常工作(2)[返回:错误的主机名]
use LWP::Simple;
$ua = new LWP::UserAgent();
my $req = new HTTP::Request("GET", "http://[::1]/");
my $res = $ua->request($req);
无效(3)[返回:拒绝连接]
use Net::INET6Glue::INET_is_INET6;
use LWP::Simple;
$ua = new LWP::UserAgent();
my $req = new HTTP::Request("GET", "http://[::1]/");
my $res = $ua->request($req);
Soo,如果你在http请求中不需要IPv6地址,那很好。 :(