Existe-t-il un moyen de déterminer si une redirection se produit lors d'une requête WebRequest?
-
06-07-2019 - |
Question
J'utilise HttpWebRequest pour supprimer Wikipedia.org. Souvent, il existe des liens vers des rubriques d'une page qui ont été consolidées et, par conséquent, ils vous redirigent vers la page appropriée.
par exemple
http://en.wikipedia.org/wiki/Polish_prisoners_of_war_in_Soviet_Union a>
vous redirige vers le sujet correct qui est
http://en.wikipedia.org/wiki/Polish_prisoners_of_an a>
Remarquez l'ajout du mot "the".
Je dois maintenant déterminer si une redirection a eu lieu ou non. Quelqu'un peut-il suggérer comment je pourrais le faire?
Merci!
MISE À JOUR
J'ai marqué la réponse ci-dessous comme étant une réponse, car techniquement, c'est ainsi que vous déterminez si vous avez été redirigé. Le problème que je rencontre est que Wikipedia ne fait pas réellement une redirection dure avec les codes de réponse http 3xx. Ils sont en train de faire des redirections vers le bas qui servent différents contenus sous la même URL. Je vais devoir trouver une autre solution.
La solution
Essayez ceci:
if(reponse.ResponseUri != request.RequestUri) {
//You were redirected
}
Autres conseils
Il existe une propriété appelée " AllowAutoRedirects " sur l'objet HttpWebRequest. Si vous désactivez cette option, vous pouvez suivre les redirections vous-même.
Vous pouvez également essayer de vérifier la réponse HttpWebResponse. ResponseUri .
Utilisez le HttpWebRequest.Address . propriété, qui est explicitement définie comme "l'URI après la fin des redirections effectuées au cours de la requête"
Notez que cela doit être utilisé à la place de la même chose HttpWebResponse.ResponseUri , comme indiqué dans sa documentation:
Applications devant accéder au dernier ResponseUri redirigé doit utiliser le HttpWebRequest .. :: .. Address propriété plutôt que ResponseUri, car l'utilisation de la propriété ResponseUri peut ouvrir la sécurité vulnérabilités.