C # détecter la redirection de page

J’essaie de déterminer si une qualification existe sur http://www.accreditedqualifications.org.uk sous la forme:

http://www.accreditedqualifications.org.uk/qualification/50084811.seo.aspx

50084811 étant un objective de qualification saisi par l’utilisateur final.

S’ils entrent un invalide par exemple

http://www.accreditedqualifications.org.uk/qualification/50084911.seo.aspx

Ils sont redirigés vers une page d’erreur (avec des en-têtes http incorrects pour autant que je puisse voir). Existe-t-il un moyen de détecter la redirection en C #. J’espère pouvoir détecter la redirection dans les en-têtes http (en pensant qu’il en sortira 2) ou similaire, par opposition au téléchargement de la page entière. Cela pourrait se produire souvent alors j’aimerais minimiser le trafic.

modifier

Utilisé pour regarder les en-têtes, deux pages sont émises pour une page non valide:

http://pageheaders.com/display-http-headers.php?url=http%3A%2F%2Fwww.

Le moyen le plus simple est probablement de récupérer le contenu à l’aide d’une demande HEAD (définir Method sur “HEAD”) dans un HttpWebRequest après avoir défini AllowAutoRedirect sur false. Je ne me souviens pas d’emblée si cela causera une exception ou non, mais de toute façon, cela devrait être facile à gérer.

Il existe un certain nombre de codes différents qui pourraient être renvoyés. Vous pouvez vérifier les différents codes à la fois:

 response.StatusCode == HttpStatusCode.Redirect 

Vous pouvez afficher toutes les possibilités sur http://msdn.microsoft.com/en-us/library/system.net.httpstatuscode.aspx.

Vous pouvez également trouver suffisant de vérifier si l’emplacement dans la réponse est différent.

 var request = (HttpWebRequest)WebRequest.Create(uri); request.Method = "HEAD"; request.AllowAutoRedirect = false; ssortingng location; using (var response = request.GetResponse() as HttpWebResponse) { location = response.GetResponseHeader("Location"); } return (location != uri.OriginalSsortingng); 

Vous ne pouvez le faire qu’en utilisant un client Web de votre serveur. Si vous donnez le lien à votre client, vous ne ferez plus partie de la communication entre lui et le serveur des qualifications accrédité, et vous ne pourrez donc pas obtenir l’information selon laquelle le lien a été redirigé vers une erreur.

Autant que je puisse comprendre votre projet, je passerais un appel en utilisant Webclient (ou quoi que ce soit d’autre) de mon serveur pour vérifier que la qualification existe et pour stocker le résultat dans la firebase database avec une durée de mise en mémoire tampon. Cela permettrait de ne pas faire trop d’appels et d’obtenir néanmoins des informations fiables.