2 URL¶
URL¶
Una URL (Uniform Resource Locator) es un tipo de URI que sirve para identificar un recurso en Internet. Sigue el formato jerárquico especificado anteriormente, pero añade un par de elementos adicionales:
- Port (puerto): Al especificar la autoridad se le puede añadir opcionalmente el carácter
:
seguido del número de puerto que debe emplearse para conectar con la autoridad. - Anchor (ancla): Se puede añadir al final de la URL el carácter
#
seguido de un nombre que hayamos asignado a una determinada posición de nuestra página web, para indicar que el navegador se posicione automáticamente en dicha posición.
Por ejemplo, en la URL http://www.alistapart.com:81/comments/webstandards2008?page=5#42
, el esquema/protocolo es http
, la autoridad es www.alistapart.com
, el puerto es 81
, la ruta es /comments/webstandards2008
, la consulta es ?page=5
y el ancla es #5
.
En Java, una URL está representada por la clase URL
, cuyo constructor está sobrecargado para que podamos crear nuestro objeto URL a partir de una cadena completa o de las distintas partes de la URL. Si no es posible formar una URL con sintaxis válida a partir de los datos aportados al constructor, éste lanza la excepción MalformedURLException
, aunque debemos tener en cuenta que no se comprueba que el recurso correspondiente exista realmente en la red. A continuación se muestran varias formas de crear un objeto URL:
URL url = new URL("http://docs.oracle.com/javase/7");
// Especificando las distintas partes de la URL.
URL url = new URL("http", "docs.oracle.com", "/javase/7");
URL url = new URL("http", "docs.oracle.com", 80, "/javase/7");
// A partir de una URL base.
URL base = new URL("http://docs.oracle.com");
URL url = new URL(base, "/javase/7");
Debemos tener en cuenta que este constructor puede lanzar la excepción MalformedURLException
si la cadena recibida es null
, o no contiene protocolo, o el protocolo que contiene no es conocido. Otro aspecto a tener en cuenta es que el constructor no comprueba que el recurso correspondiente exista realmente en la red.
La clase URL nos proporciona una serie de métodos informativos para obtener las partes de una URL, como getAuthority()
, getPort(),
getHost()
, getPath()
, getQuery()
y getFile()
(ruta + consulta).
Una vez creado nuestro objeto URL
, podemos establecer la conexión con el recurso que representa haciendo uso de alguno del método openConnection()
, que retorna un objeto de la clase URLConnection
que representa la conexión establecida, permitiéndonos acceder no solo al flujo de entrada sino también a las cabeceras de la conexión. Más adelante hablaremos detalladamente de esta clase.