2009-06-18 8 views
0

J'utilise HttpWebRequest pour gratter Wikipedia.org. Souvent, il y aura des liens vers des sujets sur une page qui ont été consolidés et donc ils vous redirigent vers la bonne page.Existe-t-il un moyen de déterminer si une redirection se produit au cours d'une demande Web?

par exemple

http://en.wikipedia.org/wiki/Polish_prisoners_of_war_in_Soviet_Union_(after_1939)

vous redirige vers le sujet qui est correct

http://en.wikipedia.org/wiki/Polish_prisoners_of_war_in_the_Soviet_Union_(after_1939)

Notez l'ajout du mot "la".

Je dois déterminer à ce stade si une redirection s'est produite ou non. Quelqu'un peut-il suggérer comment je pourrais faire cela?

Merci!

MISE À JOUR

Je marqué la réponse ci-dessous comme une réponse parce que techniquement c'est comment vous dire si vous avez été redirigé. Le problème que je suis est le Wikipedia ne fait pas vraiment une redirection directe avec les codes de réponse http 3xx. Ils font des redirections logicielles qui servent un contenu différent sous la même URL. Je vais devoir trouver une autre solution.

Répondre

1

Essayez ceci:

if(reponse.ResponseUri != request.RequestUri) { 
    //You were redirected 
} 
3

Il existe une propriété appelée "AllowAutoRedirects" dans l'objet HttpWebRequest. Si vous l'éteignez, vous pouvez suivre les redirections vous-même.

Vous pouvez également essayer de vérifier HttpWebResponse. ResponseUri.

0

Utilisez la propriété HttpWebRequest.Address, qui est explicitement défini comme « l'URI après toute redirection qui se produisent au cours de la demande sont complets »

Notez que cela devrait être utilisé au lieu de la HttpWebResponse.ResponseUri similaire, comme la documentation dit:

les applications qui ont besoin d'accéder à la dernière redirigée ResponseUri sho uld utiliser la propriété HttpWebRequest..::..Address plutôt que ResponseUri, puisque l'utilisation de la propriété ResponseUri peut ouvrir des vulnérabilités de sécurité .

Questions connexes