Используя HttpClient, как я могу предотвратить автоматическое перенаправление и получить оригинальный код состояния и переадресацию URL в случае 301 [дубликата]
На этот вопрос уже есть ответ здесь:
Как настроить HttpClient так, чтобы он не перенаправлялся автоматически при получении кода состояния 301 HTTP? 1 ответУ меня есть следующий метод, который возвращаетHttp status code
данногоUrl
:
public static async void makeRequest(int row, string url)
{
string result;
Stopwatch sw = new Stopwatch(); sw.Start();
try
{
using (HttpClient client = new HttpClient())
{
HttpResponseMessage response = new HttpResponseMessage();
response = await client.GetAsync(url);
// dump contents of header
Console.WriteLine(response.Headers.ToString());
if (response.IsSuccessStatusCode)
{
result = ((int)response.StatusCode).ToString();
}
else
{
result = ((int)response.StatusCode).ToString();
}
}
}
catch (HttpRequestException hre)
{
result = "Server unreachable";
}
sw.Stop();
long time = sw.ElapsedTicks / (Stopwatch.Frequency / (1000L * 1000L));
requestComplete(row, url, result, time);
}
Это хорошо работает для200
/404
и т. д., однако в случае301
коды, я считаю, что возвращаемый результат являетсяуже перенаправлены (200
) результат, а не фактический301
это должно быть возвращено и которое будет иметь заголовок, содержащий, куда будет указывать редирект.
Я видел что-то подобное в других классах веб-запросов .Net и технику, чтобы установить какой-тоallowAutoRedirect
свойство ложно. Если это правильно, может кто-нибудь сказать мне правильную альтернативу дляHttpClient
класс?
Этот пост содержит информацию о вышеупомянутой концепции allowAutoRedirect, я имею в виду
Иначе, как я могу получить этот метод для возврата301s
скорее, чем200s
для Urls я знаю, чтобы быть подлинным301s
?