7.1. 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.
7.2. En este ejercicio implementaremos una aplicación
de chat para el móvil. Podemos encontrar el código base de la
aplicación en el directorio Chat
, sobre el que deberemos
hacer lo siguiente:
a) Lo primero que se mostrará será una pantalla de login, donde el usuario deberá introducir el login con el que participar en el chat. Deberemos enviar este login al servidor para iniciar la sesión. Para ello abriremos una conexión con la URL del servlet proporcionando los siguientes parámetros:
?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 cabecera URL-Reescrita
,
donde nos habrá enviado la URL rescrita que deberemos utilizar de ahora
en adelante para mantener la sesión.
Esto deberemos hacerlo en el método login
de la clase PantallaLogin
.
Este método deberá devolver la URL rescrita.
b) Una vez hemos entrado en el chat, utilizaremos la técnica de polling para obtener los mensajes escritos en el chat y mostrarlos en la pantalla. Utilizando la URL rescrita, conectaremos al servlet del chat proporcionando el siguiente parámetro:
?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étodo readUTF
las cadenas del nick
y del texto de cada mensaje del chat:
String nick = dis.readUTF(); String texto = dis.readUTF();
Esto lo haremos dentro del método actualizaLista
de la
clase ListaMensajes
. Añadiremos cada mensaje leído
como un StringItem
al formulario:
this.append(new StringItem("<" + nick + ">", texto));
Esto hará que el número de elementos del formulario vaya creciendo conforme llegan mensajes del chat. Para evitar que llegue a crecer demasiado, cosa que lo haría incómodo para la interfaz de los móviles, podemos eliminar los mensajes más antiguos cuando se rebase una cierta capacidad máxima:
if(this.size() >= CAPACIDAD) { this.delete(0); }
c) Lo último que deberemos hacer es permitir enviar mensajes al chat. Para ello enviaremos los mensajes en el POST, a la URL rescrita proporcionando el siguiente parámetro:
?accion=enviar
Esto lo haremos en el método envia
de la clase EnviarMensaje
.
El mensaje se deberá codificar en binario, escribiendo la cadena del
mensaje con el método writeUTF
de un objeto DataOutputStream
.
Si obtenemos una respuesta 200 OK
el mensaje habrá sido
enviado correctamente.