¿Cómo realizar una solicitud Post y serializar una clase a Json en C# .Net y C# .Net Core?

En este video te mostrare como puedes hacer una solicitud por el protocolo Post a un servicio enviando un objeto serializado como Json.

¿Cómo realizar una solicitud Get y deserializar el json resultado en una clase en C# .Net Core?

En este video te mostrare como puedes hacer una solicitud por el protocolo Get a un servicio web, obtener el json resultado y este deserializarlo en un objeto, todo en un solo video.

Curso de C# .Net

En este curso me enfoco a los aspectos de C# .Net directamente sin tanta teoria. El curso es grabado en vivo como los mejores programas de la televisión, en vivo y con errores.

Aquí no veras Programación Orientada a Objetos, que son las sentencias if o while, estos conceptos ya los debes conocer, e igual hay miles de sitios aburridos que te lo enseñan.

Yo me enfocare a enseñarte C# .Net de una manera original, directo al grano, todo con el fin de que te sirva como una herramienta real de trabajo.

A partir del video 2 comenzaremos a realizar un chat multiplataforma, el cual estará conectado por medio de un servicio web al cual se comunicara un sistema hecho en MVC y otro en Windows Form.

La lista de videos esta ordenada conforme van saliendo y se encuentran aquí abajo. (Igual puedes dar clic a uno y seguir la lista de reproducción)

Código del curso (se actualiza cada que hay nuevos videos): clic aquí

1. Introducción

2. Entornos y arquitectura (Windows Form, MVC, MVC Api)

3. Publicación y configuración de IIS

4. Json a Objeto, recibir datos por POST

5. Serializar y deserializar objetos, generics, enviar datos por POST

6. Creación de librerías, ¿Que es el administrador de paquetes NuGet?, appsettings

7. Vistas en MVC .Net, Razor

8. Validaciones con DataAnnotatios en MVC .Net

9. Autentificación en MVC API .Net

10. Autentificación en MVC .Net utilizando servicio web, filtros, seguridad

11. Solicitudes remotas en tiempo real con SignalR

12. Verificar Access Token, regresar listado en json

13. Utilizar if y try catch en LINQ con Lambda

14. Enviar y recibir datos en tiempo real con SignalR

15. Seguridad y grupos en SignalR

16. Introducción a Windows Forms

17. Sesiones en windows forms

18. Creación de elementos dinámicamente en windows forms

¿Cómo enviar un objeto json en una solicitud Get o Post en C# .Net?

Ahora que estamos en la era de los webservice todos tenemos la necesidad de saber la forma de enviar datos por medio de Get o Post. En C# la forma de hacer una solicitud a un servicio o a un api es muy sencilla y en el siguiente ejemplo te muestro como hacerlo por medio de una clase que yo hice.

La clase siguiente está preparada para enviar cualquier tipo de objeto ya que recibe el tipo de objeto que se enviara y lo serializa en json.

Recuerda que si el objeto tiene referencias circulares, la siguiente clase no funcionara.

Clase:


public class RequestHdeleon

  //esta clase nos sirve para tener control del resultado regresado por la solicitud
  public class Reply
    {
        public Reply()
        {
            this.success = 0;
            message = "";
        }

        public int success { get; set; }
        public object data { get; set; }
        public String menssage { get; set; }

    }

  public Reply Send<T>(string url,T objectRequest, string method="POST"){

            try {
		Reply oReply= new Reply();                

                JavaScriptSerializer js = new JavaScriptSerializer();

		//serializamos el objeto
                string json = Newtonsoft.Json.JsonConvert.SerializeObject(objectRequest);

                //peticion
                WebRequest request = WebRequest.Create(url_callback);
                //headers
                request.Method = method;
                request.PreAuthenticate = true;
                request.ContentType = "application/json;charset=utf-8'";
                request.Timeout = 10000; //esto es opcional

                using (var streamWriter = new StreamWriter(request.GetRequestStream()))
                {
                    streamWriter.Write(json);
                    streamWriter.Flush();
                }

                var httpResponse = (HttpWebResponse)request.GetResponse();
                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    result = streamReader.ReadToEnd();
                }
                oReply.success = 1;
                //y aquí va nuestra respuesta, la cual es lo que nos regrese el sitio solicitado
                oReply.data = result;
            }catch(Exception e){

                oReply.result = 0;
		//en caso de error lo manejamos en el mensaje
                oReply.menssage = e.Message;

            }

            return oReply;
        }
}

Ejemplo de como utilizarla:


public class UnaClase(){
   public string algo{get;set;}
}

//creamos la clase para enviar los parametros
UnaClase oUnObjeto= new UnaClase();
oUnObjeto.algo="pato feliz";

//Creamos el objeto para solicitud
RequestHdeleon oRequest= new RequestHdeleon();

//primer parametro url
//segundo parametro el objeto
//tercer parametro el metodo: POST, GET, PUT, DELETE
RequestHdeleon.Reply oReply=oRequest.Send<UnaClase>("http://somesite.com/api/somecontroller/",oUnObjeto,"POST");