Пример #1
0
        public static async Task <DtoIpUseragent> ConsultarIp()
        {
            var dtoIpUa = new DtoIpUseragent();            //Creamos el objeto
            var uri     = $"https://ifconfig.me/all.json"; //URL DE LA PETICION

            //Creamos un objeto HttpClient  para utilizarlo en nuestra consulta
            using (HttpClient client = new HttpClient()) {
                //Lanzamos la petición y recogemos la respuesta (será un JSON)
                var response = await client.GetAsync(uri);

                if (response != null)
                {
                    //Leemos como string el resultado contenido en "response"
                    var json = response.Content.ReadAsStringAsync().Result;

                    //Deserializamos el contenido y la almacenamos (obtendremos una Lista, que será como un diccionario[KEY:VALUE] )
                    var data = (JContainer)JsonConvert.DeserializeObject(json);

                    //Comprobamos si existen los correspondientes datos Proporcionandole la "KEY" y los seteamos en caso de tenerlos
                    if (data["ip_addr"] != null)
                    {
                        dtoIpUa.LblIpInfo = (string)data["ip_addr"];
                    }

                    if (data["user_agent"] != null)
                    {
                        dtoIpUa.LblUaInfo = (string)data["user_agent"];
                    }
                } //Fin del if (response != null)
            }     //Fin del USING HTTPclient

            return(dtoIpUa);
        } //Fin del metodo ConsultarIp
        }//Fin del constructor

        public async void BtnConsultar_Clicked(object sender, EventArgs e)
        {
            //Creamos un objeto NUEVO (que tendrá las qtiquetas vacías)
            DtoIpUseragent dtoIpUa = new DtoIpUseragent();

            //Comprobamos el estado del botón y según sea, actuará

            if (BtnConsultar.Text.ToString().Equals("Consultar"))
            {
                try
                {
                    //Recibimos el objeto "PRINCIPAL" que nos devolverá la consulta
                    dtoIpUa = await ServicioConsultaIpUa.ConsultarIp();
                }
                catch (Exception)
                {}


                //Comprobamos que trae información de la IP si no... mostraremos un error
                if (!dtoIpUa.LblIpInfo.ToString().Equals(""))
                {
                    //Seteamos las propiedades de los Elementos
                    LblIpXaml.TextColor = Color.White;
                    dtoIpUa.LblIp       = "Tu IP es:";
                }
                else
                {
                    LblIpXaml.TextColor = Color.Red;
                    dtoIpUa.LblIp       = "Se ha producido un ERROR\n" +
                                          $"No se ha recibido la información esperada\n\nRecibido:{dtoIpUa.LblIpInfo}";
                }//Fin del if-else


                //Comprobamos que trae información el UserAgent si no... mostraremos un error
                if (!dtoIpUa.LblUaInfo.ToString().Equals(""))
                {
                    //Seteamos las propiedades de los Elementos
                    LblUaXaml.TextColor = Color.White;
                    dtoIpUa.LblUa       = "Tu User-Agent es:";
                }
                else
                {
                    LblUaXaml.TextColor = Color.Red;
                    dtoIpUa.LblUa       = "Se ha producido un ERROR\n" +
                                          $"No se ha recibido la información esperada\n\nRecibido:{dtoIpUa.LblUaInfo}";
                }//Fin del if que comprueba Si EXISTE algo en el "LblDos" del objeto recibido



                BtnConsultar.Text = "Reset Result";
                //Pasamos el objeto al XAML para setear los Botones y etiquetas
                this.BindingContext = dtoIpUa;
            }
            else
            {
                //Seteamos el botón ya que arriba de declaró un objeto vacío
                BtnConsultar.Text = "Consultar";
                //Pasamos el objeto al XAML para setear los Botones y etiquetas
                this.BindingContext = dtoIpUa;
            } //Fin del IF que comprueba el estado del BOTON
        }