У меня есть следующий метод, который возвращает 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
для значения false. Если это по правильным линиям, может ли кто-нибудь сказать мне правильную альтернативу для класса HttpClient
?
У этого сообщения есть информация о вышеупомянутой концепции allowAutoRedirect, я имею в виду
Иначе, как я могу заставить этот метод возвращать 301s
, а не 200s
для Urls, которые, как я знаю, являются подлинными 301s
?