Есть ли способ определить, происходит ли перенаправление во время WebRequest? - PullRequest
0 голосов
/ 18 июня 2009

Я использую HttpWebRequest для очистки Wikipedia.org. Часто на странице были ссылки на объединенные темы, и поэтому они перенаправляют вас на нужную страницу.

например

http://en.wikipedia.org/wiki/Polish_prisoners_of_war_in_Soviet_Union_(after_1939)

перенаправляет вас на правильную тему, которая

http://en.wikipedia.org/wiki/Polish_prisoners_of_war_in_the_Soviet_Union_(after_1939)

Обратите внимание на добавление слова "the".

Мне нужно определить в этот момент, произошло ли перенаправление. Кто-нибудь может подсказать, как мне это сделать?

Спасибо!

UPDATE

Я пометил ответ ниже как ответивший, потому что технически именно так вы говорите, если вас перенаправили. Проблема, с которой я столкнулся, состоит в том, что Википедия на самом деле не выполняет аппаратное перенаправление с http-кодом ответа 3xx. Они делают мягких перенаправлений , которые обслуживают различное содержимое под одним и тем же URL. Я должен найти другое решение.

Ответы [ 3 ]

3 голосов
/ 18 июня 2009

В объекте HttpWebRequest есть свойство с именем " AllowAutoRedirects ". Если вы отключите эту функцию, вы сможете самостоятельно выполнить переадресацию.

Вы также можете попробовать проверить HttpWebResponse. ResponseUri .

1 голос
/ 18 июня 2009

Попробуйте это:

if(reponse.ResponseUri != request.RequestUri) {
    //You were redirected
}
0 голосов
/ 21 марта 2017

Используйте свойство HttpWebRequest.Address , которое явно определено как «URI после всех перенаправлений, которые происходят во время запроса»

Обратите внимание, что это следует использовать вместо аналогичного HttpWebResponse.ResponseUri , как указано в документации:

Приложения, которым требуется доступ к последнему перенаправленному ResponseUri следует использовать свойство HttpWebRequest .. :: .. Address вместо ResponseUri, так как использование свойства ResponseUri может открыть безопасность уязвимости.

...