Получение местоположения от WebClient на Перенаправлении HTTP 302?

У меня есть URL, который возвращает перенаправление HTTP 302, и я хотел бы получить URL, к которому это перенаправляет.

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

Существует ли способ сделать простой Запрос HTTP и возвратить целевое Местоположение без WebClient после него?

Я испытываю желание сделать коммуникацию неструктурированного сокета, поскольку HTTP достаточно прост, но сайт использует HTTPS, и я не хочу делать Квитирование.

В конце я не забочусь, какой класс я использую, я просто не хочу, чтобы он следовал за Перенаправлениями HTTP 302 :)

27
задан Michael Stum 8 April 2010 в 22:15
поделиться

3 ответа

В HttpWebRequest вы можете установить AllowAutoRedirect в false, чтобы обрабатывать перенаправление самостоятельно.

17
ответ дан 28 November 2019 в 05:02
поделиться

У HttpWebRequest есть свойство AllowAutoRedirect , для которого можно установить значение false ( всегда верно для WebClient ), а затем получите HTTP-заголовок Location .

14
ответ дан 28 November 2019 в 05:02
поделиться

Это довольно просто сделать

Предположим, вы создали HttpWebRequest с именем myRequest

// don't allow redirects, they are allowed by default so we're going to override
myRequest.AllowAutoRedirect = false;

// send the request
HttpWebResponse response = myRequest.GetResponse();

// check the header for a Location value
if( response.Headers["Location"] == null )
{
  // null means no redirect
}
else
{
  // anything non null means we got a redirect
}

Извините за любые ошибки компиляции. У меня нет VS прямо передо мной, но я использовал это в прошлом, чтобы проверьте наличие перенаправлений.

22
ответ дан 28 November 2019 в 05:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: