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 }