¿Qué es java.net.URL y cómo se utiliza para gestionar URLs en Java?

| Última modificación: 2 de enero de 2025 | Tiempo de Lectura: 3 minutos

Hay varias cositas que se deben tener en cuenta a la hora de trabajar con URLs en Java, como los protocolos, hosts y puertos. A mí me pasó que no entendía muy bien cómo crear conexiones o analizar partes específicas de una URL y no fue sino hasta que aprendí a usar java.net.URL que todo mejoró y se me facilitó.

Lo grandioso fue que me di cuenta de que esta clase me abrió un mundo de posibilidades para interactuar con recursos en la web y hoy en día le saco mucho provecho. Por eso quiero enseñarte todo sobre esta clase para que no solo aprendas qué es sino como usarla cada que vayas a gestionar URLs en este lenguaje de programación.

java.net.URL en Java qué es

¿Qué es java.net.URL?

Yo creo que su nombre ya te da una idea. Resulta que java.net.URL se creó para trabajar con “Localizadores Uniformes de Recursos” o URLs. En caso de que no lo recuerdes, una URL es una dirección que señala un recurso en la web, como un archivo, una imagen o un servicio API. Entonces, la clase URL te ayudará a analizar, construir y manipular estas direcciones.

Componentes básicos de una URL

Una URL típica como http://www.ejemplo.com:80/index.html tiene las siguientes partes:

  • Protocolo: El tipo de comunicación que se utilizará (por ejemplo, http o https).
  • Nombre del host: La dirección del servidor que contiene el recurso (por ejemplo, www.ejemplo.com).
  • Número de puerto: Un atributo opcional que especifica el puerto de conexión (por defecto, 80 para HTTP y 443 para HTTPS).
  • Ruta del recurso: La ubicación del recurso en el servidor (/index.html en este caso).

Con java.net.URL, puedes acceder fácilmente a estas partes mediante sus métodos específicos.

Cómo usar java.net.URL: Ejemplos prácticos

La clase java.net.URL te da varios constructores para crear objetos URL, dependiendo de la información que tengas disponible.

Crear un objeto URL

import java.net.URL;

public class UrlEjemplo {
public static void main(String[] args) {
try {
URL url = new URL("https://www.keepcoding.io/cursos/java/");
System.out.println("Protocolo: " + url.getProtocol());
System.out.println("Host: " + url.getHost());
System.out.println("Puerto: " + url.getPort());
System.out.println("Archivo: " + url.getFile());
} catch (Exception e) {
System.err.println("URL inválida: " + e.getMessage());
}
}
}

Mira la salida:

Protocolo: https
Host: www.keepcoding.io
Puerto: -1
Archivo: /cursos/java/

Leer contenido de una URL

Cuando necesites leer el contenido de una página web. Yo te recomiendo hacerlo combinando URL con InputStream:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;

public class LeerContenidoURL {
public static void main(String[] args) {
try {
URL url = new URL("https://jsonplaceholder.typicode.com/posts/1");
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
String linea;
while ((linea = reader.readLine()) != null) {
System.out.println(linea);
}
reader.close();
} catch (Exception e) {
System.err.println("Error al leer la URL: " + e.getMessage());
}
}
}

Si eres buen observador, notarás que este código descarga y muestra el contenido JSON de un servicio API público.

Construir URLs dinámicamente

Imagina que estás desarrollando una aplicación donde necesitas construir URLs con parámetros dinámicos, como una búsqueda en un sitio web:

import java.net.URL;
import java.net.URLEncoder;

public class ConstruirURL {
public static void main(String[] args) {
try {
String base = "https://www.example.com/search";
String query = "Java programación";
String urlFinal = base + "?q=" + URLEncoder.encode(query, "UTF-8");
URL url = new URL(urlFinal);
System.out.println("URL construida: " + url);
} catch (Exception e) {
System.err.println("Error al construir la URL: " + e.getMessage());
}
}
}

Salida esperada:

URL construida: https://www.example.com/search?q=Java+programaci%C3%B3n

Métodos útiles en java.net.URL

Te explico brevemente algunos de los métodos más útiles de esta clase:

  • getProtocol(): Este método te devuelve el protocolo utilizado (HTTP, HTTPS, etc.).
  • getHost(): Te sirve para obtener el nombre del host.
  • getPort(): Por si necesitas recuperar el número de puerto o -1 si no está especificado.
  • getFile(): Este te muestra la ruta completa del recurso.
  • openStream(): Úsalo para abrir un flujo para leer el contenido de la URL.

Algunos consejos para trabajar con java.net.URL

  1. Validación previa: Siempre verifica que las URLs sean válidas antes de usarlas.
  2. Gestión de errores: Usa bloques try-catch para manejar excepciones como MalformedURLException.
  3. Codificación de parámetros: Usa URLEncoder para evitar problemas con caracteres especiales en las URLs.

Como ves, aprender java.net.URL es clave si trabajas con aplicaciones que interactúan con servicios web, APIs o incluso simples recursos en línea. Aquí ya aprendiste a construir URLs dinámicamente y a leer contenido de una mejor forma. Ponlo en práctica lo antes posible.

¿Listo para llevar tus habilidades de Java al siguiente nivel? Apúntate al Bootcamp de Java Full Stack de KeepCoding y aprende a manejar no solo URLs, sino también a desarrollar aplicaciones completas que impacten el mundo IT. ¡Inscríbete ahora y da el salto a una nueva carrera!

Posts más leídos