//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