Componente web

Este tutorial se compone de tres páginas: Intro (esta página), construcción del entorno de usuario y construcción del comportamiento en el editor de bloques.
La aplicación "Farmacias de guardia en Navarra" permite localizar en Maps las farmacias de guardia en la Comunidad Navarra. Los datos empleados por la aplicación son publicados por Open Data Navarra. Aclarar que en el momento de empezar a escribir el tutorial me he dado cuenta de que ya existe una aplicacción infinitamente mejor (Os ruego que no hagáis comparaciones pues me dejarían en muy mal lugar). En mi descargo decir que mi App es simplemente un ejemplo con fines exclusivamente didácticos que me ha permitido poner en práctica el nuevo componente web.
Aunque podría haber utilizado los datos proporcionados por Open Data Navarra, en formato CSV (y me hubiese evitado bastante trabajo), he preferido emplear los de formato XML y así practicar un poco con bloques de manejo de cadenas de texto.

Os dejo este ejemplo, mientras no encuentre otro sobre el que no se puedan establecer comparaciones :-))

El componente Web que permite peticiones HTTP GET y POST. Las respuestas pueden ser entregadas como un parámetro de texto al evento GotText o guardar en un archivo con el nombre del archivo entregado como parámetro al evento GotFile. Los archivos pueden ser los tipos que no son de texto, como imágenes o archivos de sonido.

En primer lugar, os presento una pequeña prueba que muestra el resultado de una petición HTTP. Se trata de una App con dos botones, uno lanza la petición "http://www.navarra.es/appsext/DescargarFichero/default.aspx?codigoAcceso=OpenData&fichero=GuardiasFarmacias/Guardias.xml" y el otro esta otra "http://www.navarra.es/appsext/DescargarFichero/default.aspx?codigoAcceso=OpenData&fichero=GuardiasFarmacias/Guardias.csv". Cuando el servicio web responde, asigno los resultados a la etiqueta inicializada con el texto "Respuesta a la petición".

      

     

Los bloques implicados son los siguientes:


Si el código de respuesta es 200 quiere decir que la cosa fue bien (podríamos emplearlo como control de la operación mediante un bloque ifelse). La respuesta es un texto. En el caso de CSV podríamos tratarlo como en los ejercicios de Fusion Tables, utilizando el bloque list from csv table. El caso de XML es más complicado, debido a que App Inventor no ofrece ningún mecanismo para su tratamiento automático, lo que sería sin duda una buena función a añadir, pues muchos servicios web proporcionan este formato.

Una vez tenemos los datos en el móvil, lo que tenemos que hacer es tratarlos. En este caso, seleccionar los del día actual y separarlos del resto y, a continuación utilizarlos para presentar al usuario una lista de selección (List Picker) en la que pueda elegir la farmacia que estime más conveniente.
Cuando el usuario selecciona la farmacia, usando la dirección y la localidad de la misma, efectuaremos una llamada a Maps para que nos muestre la localización.

Cuando el usuario abandone Maps se encontrará con la ficha de la Farmacia.

        

Comments