Al usar HttpClient, ¿cómo evitaría los redireccionamientos automáticos y obtendría el código de estado original y la URL de relleno en el caso de 301 [duplicado]?
Esta pregunta ya tiene una respuesta aquí:
¿Cómo se configura HttpClient para que no redirija automáticamente cuando recibe un Código de estado HTTP 301? 1 respuestaTengo el siguiente método que devuelve elHttp status code
de un dadoUrl
:
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);
}
Funciona bien para200
/404
etc, sin embargo, en el caso de301
Los códigos creo que el resultado devuelto es elya redirigido (200
) resultado, en lugar de lo real301
que debería devolverse y que tendría un encabezado que contenga el lugar donde se apuntaría la redirección.
He visto algo como esto en otras clases de solicitudes web .Net y la técnica que existía para establecer algún tipo deallowAutoRedirect
propiedad a falso. Si esto es correcto, ¿puede alguien decirme la alternativa correcta para elHttpClient
¿clase?
Este post tiene información sobre el concepto anterior AllowAutoRedirect que quiero decir
Si no, ¿cómo podría obtener este método para volver301s
más bien que200s
para Urls sé que es genuino301s
?