¿Hay alguna manera de determinar si se produce una redirección durante una solicitud web?
-
06-07-2019 - |
Pregunta
Estoy usando HttpWebRequest para raspar Wikipedia.org. Muchas veces habrá enlaces a temas en una página que se han consolidado y, por lo tanto, lo redirigen a la página correcta.
por ejemplo
http://en.wikipedia.org/wiki/Polish_prisoners_of_war_in_S)_Unido_a_19/39 a>
te redirige al tema correcto que es
Observe la adición de la palabra " the " ;.
Necesito determinar en este punto si ha ocurrido una redirección o no. ¿Alguien puede sugerir cómo podría hacer esto?
¡Gracias!
UPDATE
Marqué la respuesta a continuación como contestada porque técnicamente así es como se sabe si ha sido redirigido. El problema que tengo es que Wikipedia no está haciendo una redirección dura con los códigos de respuesta http 3xx. Están haciendo redirecciones suaves que sirven diferentes contenidos bajo la misma URL. Tendré que encontrar otra solución.
Solución
Prueba esto:
if(reponse.ResponseUri != request.RequestUri) {
//You were redirected
}
Otros consejos
Hay una propiedad llamada " AllowAutoRedirects " en el objeto HttpWebRequest. Si lo desactiva, puede seguir las redirecciones usted mismo.
También puede intentar verificar HttpWebResponse. ResponseUri .
Utilice el HttpWebRequest.Address propiedad, que se define explícitamente como " el URI después de que se completen las redirecciones que ocurren durante la solicitud "
Tenga en cuenta que esto debe usarse en lugar del similar HttpWebResponse.ResponseUri , como dice su documentación:
Aplicaciones que necesitan acceder al último ResponseUri redirigido debe usar el HttpWebRequest .. :: .. Dirección propiedad en lugar de ResponseUri, ya que el uso de la propiedad ResponseUri puede abrir seguridad vulnerabilidades.