|
Trabajando con URLs |
|
El objetivo de esta práctica es aprender como se manejan recursos de
Internet localizados a través de su URL desde un programa Java. Para
ello vamos a hacer algunos programas sencillos con dos clases del
paquete java.net: la clase URL y la clase URLConnection.
Al final de este práctica se proponen una serie de ejercicios complementarios, que os permitirá fijar los conocimientos y conocer un poco más los métodos que proporcionan estas clases. OBLIGATORIO ENTREGAR EL EJERCICIO 2 |
|||
|
URL es el acrónimo de Uniform Resource Locator. Su objetivo es
identificar un recurso en el Web, de tal forma que podamos localizarlo
a través de un programa cliente, típicamente un navegador. Java nos
proporciona la clase URL del paquete java.net para representar objetos
URL y acceder a ellos.
Como hemos visto en clase de teoría, una URL no especifica únicamente recursos Web a los que se accede a través del protocolo HTTP, sino que es una notación mucho más genérica, pero como veremos la clase java.net.URL está muy orientada a URL de HTTP. Una URL que localiza recursos empleando el protocolo HTTP tiene los siguientes campos:
Clase URL
Java proporciona varios contructores para crear objetos URL, veamos alguno de ellos: IMPORTANTE: Un objeto URL es de tipo "write-once", una vez creado un objeto URL con unos campos (protocolo, nombredelservidor, puerto,...) estos no se pueden modificar. La clase URL proporciona métodos para obtener los diferentes campos que forman una URL: Veamos la utilización de estos métodos con el siguiente ejemplo (código fuente Ejemplo_URL.java) import java.net.*; El método InputStream openStream() nos permite recuperar los datos del recurso representado por la URL. Este método nos devuelve un InputStream del cual podremos leer el contenido del recurso que identifica la URL. Vamos a hacer un ejercicio en el que utilizaremos este nuevo método para sacar por pantalla el contenido de la página principal de la asignatura, identificada por la siguiente URL "http://karajan.it.uc3m.es:8081/CR/". Consejo: utilizad la clase BufferedReader para leer líneas desde el InputStream. Llamad a vuestro programa java LeerURL.java Clase URLConnectionSi se quieren hacer más cosas que simplemente leer el recurso que tiene asociado una URL, se debe de utilizar la clase URLConnection que nos permite abrir una conexión con el recurso y realizar operaciones de lectura y escritura sobre el. Aunque lo de escribir os puede resultar chocante si pensais en un documento HTML, imaginaos ¿qué puede ocurrir si nos conectamos con un CGI?.
Antes de responder a esta pregunta, vamos a realizar una operación de lectura, repetiremos el mismo ejercicio que en el apartado anterior pero empleando la clase URLConnection, en este caso, los pasos que debeis seguir son: Llamad a vuestro programa java ConexionLeerURL.java Un CGI Common Gateway Interface define un interfaz para ejecutar programas en un servidor utilizando el protocolo HTTP. Este tipo de programas pueden recibir parámetros de entrada y como resultado generan una página HTML. Los valores de los parámetros se indican con pares "nombre_parametro=valor_parametro", separando los diferentes pares por el caracter &. La cadena así formada se codifica de la siguiente forma: los caracteres alfanuméricos se codifican igual, los caracteres no alfanuméricos se codifican con % seguido de dos dígitos que indican su valor en ASCII, los espacios en blanco se codifican como "+" y el "+" se codifica como %2b. A la cadena así codifica es lo que se denomina Query String. Estos parámetros de entrada suelen solicitarse al usuario a través de formularios. Cuando se envía el formulario la Query String correspondiente se envía al programa CGI de dos formas posibles: Para más información sobre CGI ver el apartado de enlaces. Cuando abrimos una conexión con una URL que representa un CGI, el stream de salida de nuestra conexión está conectado a la entrada estándar del programa CGI, de manera análoga a cómo el stream de entrada está conectado a la salida estándar del programa CGI. De esta forma, escribir "sobre" una URLConnection nos permite interactuar desde nuestro programa Java con un programa CGI que emplee el método POST, veamoslo en el siguiente ejercicio. El ejercicio consiste en ejecutar el cgi localizado en http://karajan.it.uc3m.es/~celeste/cgi-bin/hola.cgi que lee una el parametro nombre de la entrada estándar, y su salida es una página HTML con el contenido "Hola [valor_nombre]". Los pasos que deberemos seguir en nuestro programa son: El resultado que debemos obtener es: HOLA [valor_nombre] Llamad a vuestro programa Java ConexionURL.java |
|||
|
|
|||
|
|