Avatar ·

¿Cómo hacer una solicitud HTTP en C#?

¡Saludos colegas!

Me encontré con una tarea aparentemente trivial: realizar una solicitud HTTP a una API externa desde una aplicación de consola .NET 6. Leí varios tutoriales, pero los ejemplos están dispersos: en algunos usan HttpClient, en otros WebClient (¿obsoleto?), y en algunos RestSharp. Quiero entender el enfoque moderno y correcto.

Intenté escribir una solicitud GET simple con HttpClient, pero la aplicación se congela. Aquí está el código:
var client = new HttpClient();
var response = await client.GetAsync("https://api.github.com/zen");
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);

Lo ejecuto en el método Main (sin async), y recibo una advertencia de que el código asíncrono no se está esperando. Intenté agregar .Result y comenzó un deadlock. Tampoco está claro si es necesario llamar a Dispose() para HttpClient y cómo manejar correctamente los errores (timeout