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.