Existe uma maneira de determinar se um redirecionamento occurrs durante um WebRequest?
-
06-07-2019 - |
Pergunta
Eu estou usando HttpWebRequest para raspar Wikipedia.org. Muitas vezes, haverá links para tópicos em uma página que foram consolidadas e, portanto, eles redireccionado para a página correta.
Por exemplo
http://en.wikipedia.org/wiki/Polish_prisoners_of_war_in_Soviet_Union_(after_1939)
redireciona para o tópico correto, o que é
http://en.wikipedia.org/wiki/Polish_prisoners_of_war_in_the_Soviet_Union_(after_1939)
Observe a adição da palavra "o".
Eu preciso determinar neste momento ou não um redirecionamento aconteceu. Alguém pode sugerir como eu poderia fazer isso?
Obrigado!
Atualizar
Eu marquei a resposta abaixo como respondida porque tecnicamente é assim que você dizer se você foi redirecionado. O problema que estou tendo é a Wikipedia não está realmente fazendo um redirecionamento duro com http códigos de resposta 3xx. Eles estão fazendo redirecionamentos suaves que serve conteúdo diferente sob o mesmo URL. Vou ter de encontrar outra solução.
Solução
Tente isto:
if(reponse.ResponseUri != request.RequestUri) {
//You were redirected
}
Outras dicas
Há uma propriedade chamada " AllowAutoRedirects " sobre o objeto HttpWebRequest. Se você desligar isso você pode seguir os redirecionamentos si mesmo.
Você também pode tentar verificar o HttpWebResponse. ResponseUri .
Use a HttpWebRequest.Address propriedade, que é explicitamente definido como "o URI depois de quaisquer redirecionamentos que acontecem durante o pedido está completo"
Note que este deve ser usado em vez do semelhante HttpWebResponse.ResponseUri , como sua documentação diz:
Os aplicativos que precisam acessar a última redirecionada ResponseUri deve usar o HttpWebRequest .. :: .. Endereço propriedade em vez de ResponseUri, pois o uso de ResponseUri propriedade pode abrir segurança vulnerabilidades.