Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csSpHtRed 464 of 509 menu
◀ ▶

Переход по редиректу в C#

Перенаправление - ответ сервера с кодом 301 или 302 и новым адресом в заголовке "Location". Клиент может остановиться на первом ответе или автоматически повторить запрос по новому URL.

Поведение задают через HttpClientHandler.AllowAutoRedirect. При значении false клиент останавливается на первом ответе. На "httpbin.org/redirect/1" первый ответ - перенаправление, адрес берут из "Location":

using HttpClientHandler handler = new() { AllowAutoRedirect = false }; using HttpClient client = new(handler); using HttpResponseMessage response = await client.GetAsync("https://httpbin.org/redirect/1"); Console.WriteLine((int)response.StatusCode); Console.WriteLine(response.Headers.Location?.ToString());

При значении по умолчанию true клиент повторяет GET по цепочке и возвращает ответ конечной страницы. Код уже 200, а путь в RequestUri указывает на конечную страницу, обычно "/get". Число шагов ограничено, бесконечный цикл клиент не пройдёт:

using HttpClient client = new(); using HttpResponseMessage response = await client.GetAsync("https://httpbin.org/redirect/1"); Console.WriteLine((int)response.StatusCode); Console.WriteLine(response.RequestMessage?.RequestUri?.AbsolutePath);

Выведите код ответа для "https://httpbin.org/redirect/2", если клиент не следует перенаправлениям.

Отправьте два запроса на тот же адрес: сначала без следования редиректу, затем в обычном режиме. Напечатайте оба кода через пробел.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить