Procesamiento de URL en Java

URL (Uniform Resource Locator), cuyo nombre en chino es Localizador Uniforme de Recursos, a veces también se le conoce coloquialmente como dirección web. Representa recursos en Internet, como páginas web o direcciones FTP.

En este capítulo presentaremos cómo Java maneja las URL. Una URL se puede dividir en las siguientes partes.

protocol://host:port/path?query#fragment

El protocolo (protocol) puede ser HTTP, HTTPS, FTP y File; port es el número de puerto; path es la ruta del archivo y el nombre del archivo.

Un ejemplo de URL con protocolo HTTP es el siguiente:

http://www.example.com/index.html?language=cn#j2se

Análisis de la URL:

  • El protocolo es (protocol):http
  • El host es (host:port):www.example.com
  • El número de puerto es (port):80. El ejemplo de URL anterior no especifica el puerto porque el puerto predeterminado del protocolo HTTP es 80.
  • La ruta del archivo es (path):/index.html
  • Parámetros de solicitud (query):language=cn
  • Ubicación del fragmento (fragment):j2se, se ubica en la posición del elemento HTML cuyo atributo id es j2se en la página web.

Métodos de la clase URL

La clase URL se define en el paquete java.net, y se utiliza para manejar contenido relacionado con URL. A continuación se presenta por separado la creación y el uso de la clase URL.

java.net.URL proporciona diversas formas de construir URL, y se pueden obtener recursos a través de java.net.URL.

No.Descripción del método
1public URL(String protocol, String host, int port, String file) throws MalformedURLException.
Crea una URL mediante los parámetros dados (protocolo, nombre de host, número de puerto, nombre de archivo).
2public URL(String protocol, String host, String file) throws MalformedURLException
Crea una URL usando el protocolo, nombre de host y nombre de archivo especificados; el puerto usa el puerto predeterminado del protocolo.
3public URL(String url) throws MalformedURLException
Crea una URL a partir de una cadena de URL dada.
4public URL(URL context, String url) throws MalformedURLException
Crea usando una URL base y una URL relativa.

La clase URL contiene muchos métodos para acceder a las distintas partes de la URL. Los métodos específicos y sus descripciones son los siguientes:

No.Descripción del método
1public String getPath()
Devuelve la parte de la ruta de la URL.
2public String getQuery()
Devuelve la parte de consulta de la URL.
3public String getAuthority()
Obtiene la parte de autoridad de esta URL.
4public int getPort()
Devuelve la parte del puerto de la URL.
5public int getDefaultPort()
Devuelve el número de puerto predeterminado del protocolo.
6public String getProtocol()
Devuelve el protocolo de la URL.
7public String getHost()
Devuelve el host de la URL.
8public String getFile()
Devuelve la parte del nombre de archivo de la URL.
9public String getRef()
Obtiene el ancla de esta URL (también llamada "referencia").
10public URLConnection openConnection() throws IOException
Abre una conexión URL y permite que el cliente acceda al recurso.

Ejemplo

El ejemplo anterior demuestra el uso de la clase URL de java.net para obtener los parámetros de las distintas partes de la URL:

URLDemo.java

import java.net.*; import java.io.*; public class URLDemo { public static void main(String [] args) { try { URL url = new URL("http://www.example.com/index.html?language=cn#j2se"); System.out.println("La URL es:" + url.toString()); System.out.println("El protocolo es:" + url.getProtocol()); System.out.println("Información de autoridad:" + url.getAuthority()); System.out.println("Nombre de archivo y parámetros de solicitud:" + url.getFile()); System.out.println("Nombre de host:" + url.getHost()); System.out.println("Ruta:" + url.getPath()); System.out.println("Puerto:" + url.getPort()); System.out.println("Puerto predeterminado:" + url.getDefaultPort()); System.out.println("Parámetros de solicitud:" + url.getQuery()); System.out.println("Ubicación del fragmento:" + url.getRef()); }catch(IOException e) { e.printStackTrace(); } } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

URL 为:http://www.example.com/index.html?language=cn#j2se
协议为:http
验证信息:www.example.com
文件名及请求参数:/index.html?language=cn
主机名:www.example.com
路径:/index.html
端口:-1
默认端口:80
请求参数:language=cn
定位位置:j2se

Métodos de la clase URLConnections

openConnection() devuelve un java.net.URLConnection.

Por ejemplo:

  • Si conectas a una URL con protocolo HTTP, el método openConnection() devuelve un objeto HttpURLConnection.

  • Si la URL a la que te conectas es un archivo JAR, el método openConnection() devolverá un objeto JarURLConnection.

  • etc.

La lista de métodos de URLConnection es la siguiente:

No.Descripción del método
1Object getContent()
Recupera el contenido del enlace URL.
2Object getContent(Class[] classes)
Recupera el contenido del enlace URL.
3String getContentEncoding()
Devuelve el valor del campo content-encoding de la cabecera.
4int getContentLength()
Devuelve el valor del campo content-length de la cabecera.
5String getContentType()
Devuelve el valor del campo content-type de la cabecera.
6int getLastModified()
Devuelve el valor del campo last-modified de la cabecera.
7long getExpiration()
Devuelve el valor del campo expires de la cabecera.
8long getIfModifiedSince()
Devuelve el valor del campo ifModifiedSince del objeto.
9public void setDoInput(boolean input)
Una conexión URL se puede utilizar para entrada y/o salida. Si se planea usar la conexión URL para entrada, se establece el indicador DoInput en true; si no se planea usar, se establece en false. El valor predeterminado es true.
10public void setDoOutput(boolean output)
Una conexión URL se puede utilizar para entrada y/o salida. Si se planea usar la conexión URL para salida, se establece el indicador DoOutput en true; si no se planea usar, se establece en false. El valor predeterminado es false.
11public InputStream getInputStream() throws IOException
Devuelve el flujo de entrada de la URL, utilizado para leer recursos.
12public OutputStream getOutputStream() throws IOException
Devuelve el flujo de salida de la URL, utilizado para escribir recursos.
13public URL getURL()
Devuelve la URL a la que está conectado el objeto URLConnection.

Ejemplo

En el siguiente ejemplo, la URL utiliza el protocolo HTTP. openConnection devuelve un objeto HttpURLConnection.

URLConnDemo.java

import java.net.*; import java.io.*; public class URLConnDemo { public static void main(String [] args) { try { URL url = new URL("http://www.example.com"); URLConnection urlConnection = url.openConnection(); HttpURLConnection connection = null; if(urlConnection instanceof HttpURLConnection) { connection = (HttpURLConnection) urlConnection; } else { System.out.println("Por favor, ingresa la dirección URL."); return; } BufferedReader in = new BufferedReader( new InputStreamReader(connection.getInputStream())); String urlString = ""; String current; while((current = in.readLine()) != null) { urlString += current; } System.out.println(urlString); }catch(IOException e) { e.printStackTrace(); } } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

$ javac URLConnDemo.java 
$ java URLConnDemo
.....这里会输出Ejemplo首页(http://www.example.com)的 HTML 内容.....
Otras extensiones