Переход по редиректу в 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", если
клиент не следует перенаправлениям.
Отправьте два запроса на тот же адрес: сначала без следования редиректу, затем в обычном режиме. Напечатайте оба кода через пробел.