Pop

54.Servicios Web.API REST. MVC .Consumiendo Método Get- Visual Studio 2017

54-.Servicios Web.API REST. MVC- Consumiendo Método Get

- 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 get que nos devuelva todos los pedidos que tenemos almacenados en nuestra base de datos.

- En la anterior entrada aprendimos a definir un método 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/PEDIDOS/. De esta forma podemos obtener  los pedidos que tenemos almacenados en nuestra base de datos, sin necesidad de acceder directamente a la base de datos desde nuestro cliente.

- En el video podéis ver el ejemplo:


- Como hemos visto en el video podemos obtener los valores de un origen de datos sin necesidad de acceder directamente a la base de datos de la que queremos obtener los datos.  La comunicación entre el cliente y el web service suele hacerse enviando y recibiendo los datos en formato JSON. Es de utilidad para trabajar con este formato agregar al proyecto la referencia Newtonsoft.Json que nos permite trabajar de una manera ágil con este tipo de datos.

- Os dejo código del ejemplo visto en el video:

  • Código de la página APIREST.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="APIREST.aspx.cs" Inherits="GestionVarios.APIREST" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>

            <asp:Button ID="btnListaUsuarios" runat="server" Text="Lista pedidos" OnClick="btnListaUsuarios_Click" />
            <asp:Button ID="btnAltaUSuario" runat="server" Text="Nuevo usuario" OnClick="btnAltaUSuario_Click" />
            <br />
            <asp:Label runat="server" ID="lblResultado"></asp:Label>

        </div>
    </form>
</body>
</html>




  •  Código de la página APIREST.aspx.cs

 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 btnListaUsuarios_Click(object sender, EventArgs e)
        {
            HttpWebResponse res = null;
            StreamReader SReader = null;
            String ResultadoCadena;
            string ruta = "http://localhost:57963/API/PEDIDOS/";
            try
            {
                HttpWebRequest WReq = (HttpWebRequest)HttpWebRequest.Create(ruta);
                WReq.ContentType = "application/json; charset=UTF-8";
                WReq.Method = "GET";
                res = (HttpWebResponse)WReq.GetResponse();
                Encoding Codificacion = ASCIIEncoding.UTF8;
                SReader = new StreamReader(res.GetResponseStream(), Codificacion);

                ResultadoCadena = SReader.ReadToEnd();
                lblResultado.Text = ResultadoCadena;
            }
            catch (WebException Exc)
            {
                var webResponse = (HttpWebResponse)Exc.Response;
                StreamReader Lector = new StreamReader(webResponse.GetResponseStream());
                string error = Lector.ReadToEnd();

            }
            finally
            {
                if (SReader != null)
                    SReader.Dispose();
                if (res != null)
                    res.Close();
            }
        }

        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;
        }
    }

 
}

public class Usuario
{
    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; }
}

No hay comentarios:

Publicar un comentario

Curso .NET Core en C# - 34.Creamos nuestro propio log

34.Creamos nuestro propio log Hola a todos. En este curso, analizaremos todos los conceptos básicos, intermedios y avanzados de  ASP.NET...