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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top