Wie kann ich mit HttpClient automatische Weiterleitungen verhindern und den ursprünglichen Statuscode und die Weiterleitungs-URL im Fall von 301 [duplizieren] abrufen?
Diese Frage hat hier bereits eine Antwort:
Wie konfiguriert man HttpClient so, dass es nicht automatisch umleitet, wenn es einen 301 HTTP Status Code empfängt? 1 AntwortIch habe die folgende Methode, die das zurückgibtHttp status code
von einem gegebenenUrl
:
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);
}
Es funktioniert gut für200
/404
etc, jedoch im Fall von301
Ich glaube, das zurückgegebene Ergebnis ist derbereits umgeleitet (200
) Ergebnis, anstatt der tatsächlichen301
das sollte zurückgegeben werden und einen Header enthalten, auf den die Umleitung verweisen würde.
Ich habe so etwas in anderen .Net Web Requests-Klassen gesehen und die Technik, mit der man so etwas einstellen konnteallowAutoRedirect
Eigenschaft auf falsch. Wenn dies in die richtige Richtung geht, kann mir jemand die richtige Alternative für das sagenHttpClient
Klasse?
Dieser Beitrag enthält Informationen zum obigen allowAutoRedirect-Konzept, das ich meine
Ansonsten, wie könnte ich diese Methode zurückbringen301s
eher, als200s
für urls weiß ich echt zu sein301s
?