none
Llamar a una Rest Api desde formulario. RRS feed

  • Pregunta

  • Gente buen día, nuevamente le traigo una consulta. Tengo una aplicación, con un formulario con el menú, y quiero mostrar información en el espacio libre proveniente de una web api. Esta lectura seria asincronica, cosa que cuando halla un cambio lo refleje a modo de semaforo en formulario principal.

    Ya estuve viendo como hacer las llamadas, entiendo que sería con GetAsync(url), pero lo que no entiendo como implementar el metodo static async void Main() y que la aplicación siga corriendo normalmente. Como así tambien, no me queda claro si debería trabajar con dos hilos o mas, ya que son varias llamadas.

    Cordialmente.

    Javier.

    jueves, 16 de junio de 2016 15:33

Respuestas

  • hola

    pero porque la llamada a la web api la realizas desde el Main() ? estas usando la clase HttpClient ?

    si es desde un form no veo que hace el Main, deberias invocarlo desde un form en algun evento

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 16 de junio de 2016 16:01

Todas las respuestas

  • hola

    pero porque la llamada a la web api la realizas desde el Main() ? estas usando la clase HttpClient ?

    si es desde un form no veo que hace el Main, deberias invocarlo desde un form en algun evento

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 16 de junio de 2016 16:01
  • Gracias Leandro por tu respuesta, pero no, aun no estoy haciendo nada, el punto es que los ejemplos que encuentro estan orientados a ese punto o planteados con ese ejemplo.

    Mi idea es que sea algo asincronico que cuando cambie algo desde la Api, me lo muestre en la pantalla. Seguramente se llamara la primera vez desde el Load de form principal, y eso es lo que no tengo del todo claro, para que el programa siga corriendo de forma normal.

    No se si fui un poco mas claro.

    jueves, 16 de junio de 2016 16:05
  • Leandro, buenas tardes el ejemplo que tome para encarar lo que quiero hacer es el siguiente:

    using System; using System.Net.Http; using System.Net.Http.Headers; using System.Threading.Tasks; namespace ProductStoreClient { class Product { public string Name { get; set; } public double Price { get; set; } public string Category { get; set; } } class Program { static void Main() { RunAsync().Wait(); } static async Task RunAsync() { using (var client = new HttpClient()) { client.BaseAddress = new Uri("http://localhost:9000/"); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); // HTTP GET HttpResponseMessage response = await client.GetAsync("api/products/1"); if (response.IsSuccessStatusCode) { Product product = await response.Content.ReadAsAsync<Product>(); Console.WriteLine("{0}\t${1}\t{2}", product.Name, product.Price, product.Category); } // HTTP POST var gizmo = new Product() { Name = "Gizmo", Price = 100, Category = "Widget" }; response = await client.PostAsJsonAsync("api/products", gizmo); if (response.IsSuccessStatusCode) { Uri gizmoUrl = response.Headers.Location; // HTTP PUT gizmo.Price = 80; // Update price response = await client.PutAsJsonAsync(gizmoUrl, gizmo); // HTTP DELETE response = await client.DeleteAsync(gizmoUrl); } } } } }

    Obviando las lineas de POST, PUT Y DELETE, ya que yo solo necesito obtener los datos hasta el

    momento. Lo que no termino de entender si lo tengo que cargar desde otro libro.

    Gracias.

    Javier.

    martes, 21 de junio de 2016 19:42