Używając HttpClient, w jaki sposób mógłbym zapobiec automatycznym przekierowaniom i uzyskać oryginalny kod statusu i adres URL w przypadku 301 [duplikat]
To pytanie ma już tutaj odpowiedź:
Jak skonfigurować HttpClient, aby nie przekierowywał automatycznie, gdy otrzyma kod statusu HTTP 301? 1 odpowiedźMam następującą metodę, która zwracaHttp status code
danegoUrl
:
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);
}
Działa dobrze dla200
/404
itp., jednak w przypadku301
kody Uważam, że zwrócony wynik tojuż przekierowany (200
) wynik, a nie rzeczywisty301
które powinny zostać zwrócone i które miałyby nagłówek zawierający miejsce wskazania przekierowania.
Widziałem coś takiego w innych klasach zapytań internetowych .Net, a technika była takaallowAutoRedirect
właściwość na false. Jeśli jest to we właściwych liniach, czy ktoś może mi powiedzieć poprawną alternatywę dlaHttpClient
klasa?
Ten post zawiera informacje o powyższej koncepcji allowAutoRedirect
Inaczej, jak mógłbym odzyskać tę metodę301s
zamiast200s
dla Urli wiem, że jestem szczery301s
?