17.1. Vamos a ver como ejemplo una aplicación de chat
para el móvil. En el directorio ejemplos
de las plantillas
de la sesión se encuentra una aplicación web con todos los servlets
que necesitaremos para probar los ejemplos. Podremos desplegar esta aplicación
en Tomcat para hacer pruebas con nuestro propio servidor.
Podemos encontrar la aplicación de chat implementada en el directorio
Chat
, que realiza las siguientes tareas:
?accion=login&id=<nick_del_usuario>
Si el login es correcto, el servidor nos devolverá un código de respuesta
200 OK
. Además deberemos leer la cabeceraURL-Reescrita
, donde nos habrá enviado la URL rescrita que deberemos utilizar de ahora en adelante para mantener la sesión.
?accion=lista
Esto nos devolverá como respuesta una serie de mensajes, codificados mediante un objeto
DataOutputStream
de la siguiente forma:
<nick1> <mensaje1>
<nick2> <mensaje2>
...
<nickN> <mensajeN>De esta forma podremos utilizar un objeto
DataInputStream
para ir leyendo con el métodoreadUTF
las cadenas del nick y del texto de cada mensaje del chat:String nick = dis.readUTF(); String texto = dis.readUTF();
?accion=enviar
El mensaje se deberá codificar en binario, escribiendo la cadena del mensaje con el método
writeUTF
de un objetoDataOutputStream
. Si obtenemos una respuesta200 OK
el mensaje habrá sido enviado correctamente.
17.2. Vamos a acceder desde el móvil a nuestra tienda virtual. Mostraremos en el móvil una pantalla en la que aparecerá la lista de productos que hay disponibles en nuestra tienda. Al pulsar sobre cada uno de ellos nos mostrará información detallada sobre el producto.
Tenemos la aplicación base implementada en el directorio Tienda
.
Deberemos añadir en el método leeProductos
de la
clase ListaProductos
el código necesario para leer la lista
de productos de la red.
Para ello conectaremos a la URL donde tenemos el servlet de nuestra
tienda y leeremos la información de los productos que nos envía
en la respuesta. La información que se envía consiste en una serie
de objetos Producto
serializados. Para leerlos podremos deserializar
objetos Producto
del flujo de entrada hasta que se produzca una
EOFException
, indicándonos que se ha llegado al final del
flujo.