56-.Servicios Web.API REST. MVC- Consumiendo Método Post
- En este capítulo del curso de programación en c# con visual studio 2017,vamos a continuar con los servicios web. En esta entrada vamos a consumir desde un cliente el método post que nos permite crear un un usuario en nuestro sistema.- En la anterior entrada aprendimos a definir el método que guarda en nuestra base de datos dentro de un API /REST. En esta ocasión llamamos a este método desde un cliente mediante una llamada del tipo http://localhost:57963/API/Usuario. Además de la ruta de la url a la que hacemos la petición debemos agregar a la petición el tipo de datos que espera nuestro método. Esto lo hacemos facilmente serializando y deserializando los objetos utilizando el formato JSON.
- En el video podéis ver el ejemplo:
- Os dejo un enla a una página de Microsoft donde podéis ver información más detallada:
- También os dejo el código del ejemplo visto en el video:
- Clase usuario que serializamos en la petición:
{
string nombre = String.Empty;
string email = String.Empty;
byte[] pass = null;
string codPais = String.Empty;
public string Nombre { get => nombre; set => nombre = value; }
public string Email { get => email; set => email = value; }
public byte[] Pass { get => pass; set => pass = value; }
public string CodPais { get => codPais; set => codPais = value; }
}
- Ejemplo de petición:
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace GestionVarios
{
public partial class APIREST : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnAltaUSuario_Click(object sender, EventArgs e)
{
string ResultadoCadena = String.Empty;
Usuario u = new Usuario();
u.Nombre = "Bart Simpson";
u.Email = "BartSimpson@email.com";
u.CodPais = "ARG";
u.Pass = cifrar("BART");
JsonSerializerSettings ConfigJson = new JsonSerializerSettings(); //Evitar que se serialicen los nodos cuyo valor sea nulo (Los ignora).
ConfigJson.NullValueHandling = NullValueHandling.Ignore;
byte[] Datos = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(u, Formatting.None, ConfigJson));
HttpWebRequest WReq = (HttpWebRequest)HttpWebRequest.Create("http://localhost:57963/API/Usuario");
WReq.ContentType = "application/json; charset=UTF-8";
WReq.ContentLength = Datos.Length;
WReq.Method = "POST";
WReq.GetRequestStream().Write(Datos, 0, Datos.Length);
HttpWebResponse res = (HttpWebResponse)WReq.GetResponse();
Encoding Codificacion = ASCIIEncoding.UTF8;
StreamReader SReader = new StreamReader(res.GetResponseStream(), Codificacion);
ResultadoCadena = SReader.ReadToEnd();
lblResultado.Text = ResultadoCadena;
}
private byte[] cifrar(string cadenaAcifrar)
{
String miclave = ConfigurationManager.AppSettings["clave"];
byte[] claveCifrado = System.Text.Encoding.ASCII.GetBytes(miclave);
Cifrado c = new Cifrado(claveCifrado);
byte[] b = c.cifrar(cadenaAcifrar);
return b;
}
}
}