using System.Threading.Tasks;
public static async Task Main()
var userName = await GetUserAsync(1);
Console.WriteLine($"User: {userName}");
public static async Task<string> GetUserAsync(int id)
var response = await HttpHelper.GetUserAsync(id);
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsStringAsync();
catch (HttpRequestException ex)
return $"❌ Error HTTP: {ex.Message}";
catch (TaskCanceledException)
return "❌ Error: La solicitud fue cancelada o excedió el tiempo de espera.";
return $"❌ Error inesperado: {ex.Message}";
public static class HttpHelper
public static readonly HttpClient _client = new HttpClient
BaseAddress = new Uri("https://api.example.com"),
Timeout = TimeSpan.FromSeconds(10),
public static Task<HttpResponseMessage> GetUserAsync (int userId)
return _client.GetAsync($"users/{userId}");