У меня есть URL, который возвращает перенаправление HTTP 302, и я хотел бы получить URL, к которому это перенаправляет.
Проблемой является та Система. Сеть. WebClient, кажется, на самом деле следует за ним, который плох. HttpWebRequest, кажется, делает то же.
Существует ли способ сделать простой Запрос HTTP и возвратить целевое Местоположение без WebClient после него?
Я испытываю желание сделать коммуникацию неструктурированного сокета, поскольку HTTP достаточно прост, но сайт использует HTTPS, и я не хочу делать Квитирование.
В конце я не забочусь, какой класс я использую, я просто не хочу, чтобы он следовал за Перенаправлениями HTTP 302 :)
В HttpWebRequest
вы можете установить AllowAutoRedirect
в false
, чтобы обрабатывать перенаправление самостоятельно.
У HttpWebRequest
есть свойство AllowAutoRedirect
, для которого можно установить значение false ( всегда верно для WebClient
), а затем получите HTTP-заголовок Location
.
Это довольно просто сделать
Предположим, вы создали 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 прямо передо мной, но я использовал это в прошлом, чтобы проверьте наличие перенаправлений.