Ejemplo n.º 1
0
        //Para que un metodo sea asincrono hay que marcarlo como Task y async
        //Para esperar y poder utilizar lo que devuelve una llamada asincrona
        //se usa await
        public async Task Update(TModelo model)
        {
            var datos = Serializacion <TModelo> .Serializar(model);

            //No se usa webrequest porque puede/suele fallar en los metodos post/put/delete
            //Se usa el httppclienthandler en su lugar.
            using (var handler = new HttpClientHandler())
            {
                if (auth)
                {
                    handler.Credentials = new NetworkCredential(user, pass);
                }
                //Crea un client pasandole la información del handler(que tiene los datos de autenticacion)
                using (var client = new HttpClient(handler))
                {
                    //stringcontent manipula una cadena de texto plano para que la pueda interpretar
                    //una cabecera http
                    var contenido = new StringContent(datos);
                    //indicas en la cabecera el tipo de contenido que tiene.
                    contenido.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                    //le indicas q espere(await) para que no se cierre la conexión del using
                    //mientras está haciendo el put
                    var respuesta = await client.PutAsync(new Uri(url), contenido);

                    if (!respuesta.IsSuccessStatusCode)
                    {
                        throw new Exception("Error al modificar");
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public List <TModelo> Get(String paramUrl = null)
        {
            List <TModelo> lista;
            var            urlDest = url;

            if (paramUrl != null)
            {
                urlDest += paramUrl;
            }
            //webrequest siempre es con método GET.
            var request = WebRequest.Create(urlDest);

            if (auth)
            {
                request.Credentials = new NetworkCredential(user, pass);
            }
            request.Method = "GET";
            var response = request.GetResponse();

            //stream es el canal de comunicacion/flujo de datos que se abre entre aplicaciones
            //que dentro lleva ya la respuesta. De base la información viaja como bytes
            using (var stream = response.GetResponseStream())
            {
                //reader permite leer datos del stream.
                //Streamreader transforma él solo de bytes a texto
                using (var reader = new StreamReader(stream))
                {
                    var serializado = reader.ReadToEnd();
                    //transforma el texto en una lista de objetos para trabajar con ella.
                    lista = Serializacion <List <TModelo> > .Deserializar(serializado);
                }
            }
            return(lista);
        }