Llame y consum la API web en winform usando C # .net

Soy principiante y creando la aplicación winform. En el cual tengo que usar la API para la operación CRUD simple. Mi cliente había compartido la API conmigo y me pidió que enviara datos en forma de JSON.

API: http://blabla.com/blabla/api/login-valida

CLAVE: “HelloWorld”

Valor: {“email”: “usuario@gmail.com”, “contraseña”: “123456”, “hora”: “2015-09-22 10:15:20”}

Respuesta: Login_id

¿Cómo puedo convertir datos a JSON, llamar a API usando el método POST y obtener respuesta?

EDITAR En algún lugar en stackoverflow encontré esta solución

public static void POST(string url, string jsonContent) { url="blabla.com/api/blala" + url; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(baseURL); request.Method = "POST"; System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); Byte[] byteArray = encoding.GetBytes(jsonContent); request.ContentLength = byteArray.Length; request.ContentType = @"application/json"; using (Stream dataStream = request.GetRequestStream()) { dataStream.Write(byteArray, 0, byteArray.Length); } long length = 0; try { using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { length = response.ContentLength; } } catch { throw; } } //on my login button click private void btnLogin_Click(object sender, EventArgs e) { CallAPI.POST("login-validate", "{ \"email\":" + txtUserName.Text + " ,\"password\":" + txtPassword.Text + ",\"time\": " + DateTime.Now.ToString("yyyy-MM-dd h:mm tt") + "}"); } 

Tengo una excepción que dice “El servidor remoto devolvió un error: (404) No encontrado”.

Puedes echar un vistazo a

  • Llamar a una API web desde un cliente .NET en ASP.NET Web API 2

Lo primero que necesita es instalar las bibliotecas cliente de la API web:
En el menú Herramientas, seleccione Library Package Manager, luego seleccione Package Manager Console. En la ventana de la consola del Administrador de paquetes, escriba el siguiente comando:

 Install-Package Microsoft.AspNet.WebApi.Client 

A continuación, envíe una solicitud de publicación como esta

 // HTTP POST var gizmo = new Product() { Name = "Gizmo", Price = 100, Category = "Widget" }; response = await client.PostAsJsonAsync("api/products", gizmo); if (response.IsSuccessStatusCode) { // Get the URI of the created resource. Uri gizmoUrl = response.Headers.Location; } 
  • Utilice Json.Net para convertir datos en JSON
  • Utilice WebClient para datos POST