Frage

Der folgende Code ...

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

.. fehl mit ..

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

.. wenn der Hostname in $ url ist eine IPv6-Adresse nur (das heißt: Anwesenheit eines AAAA Rekord, aber kein A Datensatz).

Meine Fragen sind:

  • Wie aktiviere ich die IPv6-Unterstützung in LWP?
  • Wie konfiguriere ich LWP Einstellungen für "bevorzugen-IPv4-over-IPv6" (A vs. AAAA) / "bevorzugen-IPv6-over-IPv4" (AAAA vs. A)?
War es hilfreich?

Lösung

Es sieht aus wie Sie gerade benötigen, um Net :: INET6Glue :: INET_is_INET6 . Zu zitieren sein Beispiel:

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

Andere Tipps

Ich glaube, Sie werden das Modul ändern müssen das IPV6 net-Modul zu verwenden. Standardmäßig ist es nicht haben diese aktiviert: http : //eintr.blogspot.com/2009/03/bad-state-of-ipv6-in-perl.html . Ich glaube nicht, dass es etwas so einfach wie „bevorzugen-ipv6“

ist

Debian Wheezy (perl 5,14)

Arbeits schön:

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

Problem (1)

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

Problem (2) [Return: Bad Hostname ]

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

Problem (3) [Return: Verbindung verweigert ]

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 Adresse in HTTP-Anfrage IPv6 nicht benötigen, es ist in Ordnung. : (

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top