Classe URL Java

URL (Uniform Resource Locator) est l'abréviation de Uniform Resource Locator, utilisé pour localiser des ressources sur Internet. En Java,java.net.URLla classe fournit des fonctionnalités pour gérer les URL, permettant aux développeurs de créer des objets URL, d'analyser les composants d'URL et d'établir des connexions réseau.


Structure de base de la classe URL

Une URL standard se compose généralement des parties suivantes :

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

Par exemple :

https://www.example.com:8080/products?id=123#details

Composants principaux

  1. Protocole:https
  2. Hôte:www.example.com
  3. Port:8080
  4. Chemin:/products
  5. Paramètres de requête:id=123
  6. Fragment:details

Création d'objets URL

Java fournit plusieurs constructeurs pour créer des objets URL :

1. Utilisation d'une chaîne URL complète

Exemple

try {
    URL url = new URL("https://www.example.com");
} catch (MalformedURLException e) {
    e.printStackTrace();
}

2. Spécification du protocole, de l'hôte et du fichier séparément

Exemple

try {
    URL url = new URL("https", "www.example.com", "/index.html");
} catch (MalformedURLException e) {
    e.printStackTrace();
}

3. Spécification du protocole, de l'hôte, du port et du fichier

Exemple

try {
    URL url = new URL("https", "www.example.com", 8080, "/api/data");
} catch (MalformedURLException e) {
    e.printStackTrace();
}

Méthodes courantes de la classe URL

Obtention des informations sur les composants d'URL

Exemple

URL url = new URL("https://www.example.com:8080/products?id=123#details");

System.out.println("Protocole : " + url.getProtocol());  // https
System.out.println("Hôte : " + url.getHost());      // www.example.com
System.out.println("Port : " + url.getPort());      // 8080
System.out.println("Chemin : " + url.getPath());      // /products
System.out.println("Requête : " + url.getQuery());     // id=123
System.out.println("Fragment : " + url.getRef());       // details

Ouverture des connexions réseau

La classe URL fournit plusieurs méthodes pour ouvrir des connexions réseau :

  1. openConnection(): renvoie un objet URLConnection
  2. openStream(): ouvre un flux d'entrée pour lire des données

Exemple

// Utiliser openStream() pour lire le contenu d'une page web
try (InputStream in = url.openStream();
     BufferedReader reader = new BufferedReader(new InputStreamReader(in))) {
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}

Encodage et décodage d'URL

Dans les URL, certains caractères doivent être encodés (comme les espaces, les caractères chinois, etc.). Java fournit les classes URLEncoder et URLDecoder pour gérer l'encodage et le décodage.

Exemple d'encodage d'URL

Exemple

String query = "name=Zhang San&age=25";
String encodedQuery = URLEncoder.encode(query, "UTF-8");
System.out.println(encodedQuery);  // Sortie : name%3D%E5%BC%A0%E4%B8%89%26age%3D25

Exemple de décodage d'URL

Exemple

String decodedQuery = URLDecoder.decode(encoded, "UTF-8");
System.out.println(decodedQuery);  // Sortie : name=Zhang San&age=25

Exemples d'applications pratiques

Exemple 1 : Téléchargement d'un fichier

Exemple

URL fileUrl = new URL("https://example.com/files/sample.pdf");
try (InputStream in = fileUrl.openStream();
     FileOutputStream out = new FileOutputStream("sample.pdf")) {
    byte[] buffer = new byte[1024];
    int bytesRead;
    while ((bytesRead = in.read(buffer)) != -1) {
        out.write(buffer, 0, bytesRead);
    }
    System.out.println("Téléchargement du fichier terminé");
} catch (IOException e) {
    e.printStackTrace();
}

Exemple 2 : Appel d'une API REST

Exemple

URL apiUrl = new URL("https://api.example.com/data?param1=value1");
try (BufferedReader reader = new BufferedReader(
        new InputStreamReader(apiUrl.openStream()))) {
    StringBuilder response = new StringBuilder();
    String line;
    while ((line = reader.readLine()) != null) {
        response.append(line);
    }
    System.out.println("API Response: " + response.toString());
} catch (IOException e) {
    e.printStackTrace();
}

Notes

  1. Gestion des exceptions: Les constructeurs d'URL peuvent lever MalformedURLException, et les opérations réseau peuvent lever IOException
  2. Sécurité: Évitez de construire des URL à partir de sources non fiables
  3. Performance: Pour les requêtes réseau fréquentes, envisagez d'utiliser un pool de connexions
  4. Encodage: Assurez une gestion correcte de l'encodage des URL, en particulier lorsque des caractères non ASCII sont inclus
Autres extensions