//Usings. using Newtonsoft.Json; using PoC.Servicios.Models; using System; using System.Net.Http; using System.Threading.Tasks; /// <summary> /// Modelo UserModel. /// </summary> public class UserModel { public int id { get; set; } public string email { get; set; } public string first_name { get; set; } public string last_name { get; set; } public string avatar { get; set; } } /// <summary> /// Modelo UserResultModel. /// </summary> public class UserResultModel { public int page { get; set; } public string per_page { get; set; } public string total { get; set; } public string total_pages { get; set; } public List<UserModel> data { get; set; } } /// <summary> /// Método para realizar una llamada HTTPGET de forma asíncrona. /// </summary> /// <remarks> /// Como ejemplo se ha usado un servicio público sin autorización, que devuelve un json con un listado de usuarios. /// </remarks> /// <returns></returns> public static async Task PoCGetAsync() { //Dirección del servicio. string url = "https://reqres.in/api/users"; using (HttpClient client = new HttpClient()) { //Invocar al servicio. HttpResponseMessage response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { //Leer respuesta. string responseBody = await response.Content.ReadAsStringAsync(); //Deserialización de datos a objeto UserResultModel. UserResultModel userResultModel = JsonConvert.DeserializeObject<UserResultModel>(responseBody); //Mostrar datos en la consola. Console.WriteLine(string.Format("Página: {0}", userResultModel.page)); Console.WriteLine(string.Format("Resultados por página: {0}", userResultModel.per_page)); Console.WriteLine(string.Format("Total resultados: {0}", userResultModel.total)); Console.WriteLine(string.Format("Total páginas: {0}", userResultModel.total_pages)); Console.WriteLine(); Console.WriteLine("Resultados:"); foreach (var user in userResultModel.data) { Console.WriteLine(string.Format("{0} {1} - {2}", user.first_name, user.last_name, user.email)); } } else { Console.WriteLine("Error en la solicitud. Código de estado: " + response.StatusCode); } } }
C#: Ejemplo llamada asíncrona HTTPGET
Tiempo de lectura: < 1 minuto