J'utilise ce sous-programme Perl pour obtenir une ligne à partir d'une page Web, que je divise ensuite pour obtenir les informations dont j'ai besoin pour continuer. Cela a fonctionné pendant une douzaine d'années.Comment puis-je gérer les redirections HTTP dans mon application Perl?
sub capture_line {
my $page_to_get = $_[0];
my $host_to_get_text = $_[1];
my $port = 80;
my $buf = &HTTPGet($page_to_get, $host_to_get_text, $port);
my $image_capture_text;
my @lines = split(/\n/,$buf);
# print "$lines[1]\n";
# print "$page_to_get, $host_to_get_text\n";
# print "$buf\n";
foreach (@lines) {
if (/$text_to_find/i) {
$image_capture_text = $_;
print "in_loop";
last;
}
}
return $image_capture_text;
}
Unforntuately, $page_to_get
est maintenant toujours une redirection 301 et $buf
, lors de l'impression, me donne une page de redirection 301, qui ne contient évidemment pas le texte recherché. Y at-il une paire de valeur $in
(par exemple) que je peux utiliser avec HTTPGet
pour me sauter au-dessus de la redirection afin que j'obtienne la page que je vois quand je tape http://$host_to_get_text$page_to_get
dans mon navigateur? Ou y a-t-il un meilleur moyen d'accomplir la même chose (connaissance d'un nom de fichier en constante évolution dans la source d'une page Web consultée)?
Nous vous remercions de votre temps. Greg Marsh
Qu'est-ce que le module est HttpGet de? Vous devez obtenir l'en-tête 'Location' de la réponse et relancer la requête en utilisant ce lien. Je sais que d'autres objets comme 'HTTP :: Request' avec' LWP :: UserAgent' traiteront automatiquement les redirections, mais je ne suis pas sûr du module que vous utilisez. –
La blague traditionnelle dans d'autres groupes de discussion est de dire "votre problème est dans la ligne 138 de votre sous-routine HTTPGet". Heureusement, les gens ne sont pas si grossiers ici. – AmbroseChapel