Ich versuche, eine URL, die einige Zeichen, die nicht-ASCII sind, zum Beispiel: http://perry.wikia.com/wiki/Página_principal, die hat ein á
Symbol.HTTP-Anfrage mit Perl zu einem utf-8 URI (einige nicht-ASCII-Zeichen innerhalb) wirft einen 404 Not Found Fehler
Ich habe versucht, mit LWP :: Useragent, aber es wirft einen 404 Not Found error:
#!/usr/bin/perl
use utf8;
use LWP::UserAgent;
use Encode qw(decode encode);
my $br = LWP::UserAgent->new;
#~ my $url = 'http://perry.wikia.com/wiki/Página_principal'; # doesn't work either
my $url = encode('UTF-8','http://perry.wikia.com/wiki/Página_principal');
my $response = $br->get($url);
if ($response->{success}) {
my $html = $response->{content};
} else {
die "Unexpected error requesting $url : " . $response->status_line;
}
Ich habe versucht, mit HTTP :: Tiny auch, das gleiche Resultat:
#!/usr/bin/perl
use utf8;
use HTTP::Tiny;
use Encode qw(decode encode);
my $url = 'http://perry.wikia.com/wiki/Página_principal';
#~ my $url = encode('UTF-8','http://perry.wikia.com/wiki/Página_principal'); # doesn't work either
my $response = HTTP::Tiny->new->get($url);
if ($response->{success}) {
my $html = $response->{content};
} else {
die "Unexpected error requesting $url : " . $response->{status};
}
Sie haben es versäumt, die URI-Codierung zu tun: "http: // perry.wikia.com/wiki/P% C3% A1gina_principal" ist das, was Sie tatsächlich abrufen möchten. – tjd
Auschecken [URI :: Encode] (https://metacpan.org/pod/URI::Encode) oder [URI :: Escape] (https://metacpan.org/pod/URI::Escape) – tjd
I vergessen zu erwähnen, ich habe versucht, URI :: Escape zu verwenden, um den URI zu entkommen, aber es funktioniert auch nicht, es gibt den gleichen 404 Fehler zurück. Eigentlich, wenn Sie versuchen, nur eine Anfrage an die URI bereits verschlüsselt: http://perry.wikia.com/wiki/P%C3%A1gina_principal es funktioniert nicht:/ – Akronix