2010-02-06 9 views
10

Der folgende Code ...Wie aktiviere ich die IPv6-Unterstützung in LWP? Adresse nur

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); 
} 

.. mit .. scheitern

500 Can't connect to <hostname> (Bad hostname '<hostname>') 

.. wenn der Hostname in URL $ ein IPv6 ist (das heißt: Anwesenheit eines AAAA Aufzeichnung, aber keine A Aufzeichnung).

Meine Fragen sind:

  • Wie aktiviere ich die IPv6-Unterstützung in LWP?
  • Wie konfiguriere ich LWP-Einstellungen für "prefer-IPv4-over-IPv6" (A vs. AAAA)/"prefer-IPv6-over-IPv4" (AAAA vs. A)?
+1

Haben Sie Ihr Betriebssystem erwähnt? Ich konnte es nicht erkennen. Nicht 100% sicher, aber es könnte relevant sein. – ziya

+0

Ich benutze Linux. – knorv

Antwort

11

Es sieht so aus, als müssten Sie nur Net::INET6Glue::INET_is_INET6 verwenden. Zu zitieren sein Beispiel:

use Net::INET6Glue::INET_is_INET6; 
use LWP::Simple; 
print get('http://[::1]:80'); 
print get('http://ipv6.google.com'); 
+0

Danke! Net :: INET6Glue hat den Trick! – knorv

1

Debian Wheezy (perl 5,14)

Arbeit schön:

use LWP::Simple; 
print get('http://ip6-localhost:80'); 

Problem (1)

use LWP::Simple; 
print get('http://[::1]:80'); 

Nicht Arbeits (2) [Return: Bad Hostname]

use LWP::Simple; 
$ua = new LWP::UserAgent(); 
my $req = new HTTP::Request("GET", "http://[::1]/"); 
my $res = $ua->request($req); 

Nicht (3) Arbeits [Return: Connection refused]

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, wenn Sie nicht brauchen, IPv6-Adresse in http-Anfrage, es ist in Ordnung. :(

Verwandte Themen