Java - Traitement d'URL

URL signifie Uniform Resource Locator et représente une ressource sur le World Wide Web, telle qu'une page Web ou un répertoire FTP.

Cette section vous montre comment écrire des programmes Java qui communiquent avec une URL. Une URL peut être décomposée en plusieurs parties, comme suit -

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

Les exemples de protocoles incluent HTTP, HTTPS, FTP et File. Le chemin est également appelé nom de fichier et l'hôte est également appelé autorité.

Ce qui suit est une URL vers une page Web dont le protocole est HTTP -

https://www.amrood.com/index.htm?language=en#j2se

Notez que cette URL ne spécifie pas de port, auquel cas le port par défaut du protocole est utilisé. Avec HTTP, le port par défaut est 80.

Constructeurs

le java.net.URL La classe représente une URL et dispose d'un ensemble complet de méthodes pour manipuler l'URL en Java.

La classe URL a plusieurs constructeurs pour créer des URL, dont les suivants -

Sr.No. Constructeurs et description
1

public URL(String protocol, String host, int port, String file) throws MalformedURLException

Crée une URL en rassemblant les parties données.

2

public URL(String protocol, String host, String file) throws MalformedURLException

Identique au constructeur précédent, sauf que le port par défaut pour le protocole donné est utilisé.

3

public URL(String url) throws MalformedURLException

Crée une URL à partir de la chaîne donnée.

4

public URL(URL context, String url) throws MalformedURLException

Crée une URL en analysant ensemble les arguments URL et String.

La classe URL contient de nombreuses méthodes pour accéder aux différentes parties de l'URL représentée. Certaines des méthodes de la classe URL incluent les suivantes -

Sr.No. Méthode et description
1

public String getPath()

Renvoie le chemin de l'URL.

2

public String getQuery()

Renvoie la partie requête de l'URL.

3

public String getAuthority()

Renvoie l'autorité de l'URL.

4

public int getPort()

Renvoie le port de l'URL.

5

public int getDefaultPort()

Renvoie le port par défaut pour le protocole de l'URL.

6

public String getProtocol()

Renvoie le protocole de l'URL.

sept

public String getHost()

Renvoie l'hôte de l'URL.

8

public String getHost()

Renvoie l'hôte de l'URL.

9

public String getFile()

Renvoie le nom de fichier de l'URL.

dix

public String getRef()

Renvoie la partie de référence de l'URL.

11

public URLConnection openConnection() throws IOException

Ouvre une connexion à l'URL, permettant à un client de communiquer avec la ressource.

Exemple

Le programme URLDemo suivant montre les différentes parties d'une URL. Une URL est entrée sur la ligne de commande et le programme URLDemo affiche chaque partie de l'URL donnée.

// File Name : URLDemo.java
import java.net.*;
import java.io.*;

public class URLDemo {

   public static void main(String [] args) {
      try {
         URL url = new URL("https://www.amrood.com/index.htm?language=en#j2se");
         
         System.out.println("URL is " + url.toString());
         System.out.println("protocol is " + url.getProtocol());
         System.out.println("authority is " + url.getAuthority());
         System.out.println("file name is " + url.getFile());
         System.out.println("host is " + url.getHost());
         System.out.println("path is " + url.getPath());
         System.out.println("port is " + url.getPort());
         System.out.println("default port is " + url.getDefaultPort());
         System.out.println("query is " + url.getQuery());
         System.out.println("ref is " + url.getRef());
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

Un exemple d'exécution de ce programme produira le résultat suivant -

Production

URL is https://www.amrood.com/index.htm?language=en#j2se
protocol is http
authority is www.amrood.com
file name is /index.htm?language=en
host is www.amrood.com
path is /index.htm
port is -1
default port is 80
query is language=en
ref is j2se

Méthodes de classe URLConnections

La méthode openConnection () renvoie un java.net.URLConnection, une classe abstraite dont les sous-classes représentent les différents types de connexions URL.

Par exemple -

  • Si vous vous connectez à une URL dont le protocole est HTTP, la méthode openConnection () renvoie un objet HttpURLConnection.

  • Si vous vous connectez à une URL qui représente un fichier JAR, la méthode openConnection () renvoie un objet JarURLConnection, etc.

La classe URLConnection a de nombreuses méthodes pour définir ou déterminer des informations sur la connexion, y compris les suivantes:

Sr.No. Méthode et description
1

Object getContent()

Récupère le contenu de cette connexion URL.

2

Object getContent(Class[] classes)

Récupère le contenu de cette connexion URL.

3

String getContentEncoding()

Renvoie la valeur du champ d'en-tête de codage de contenu.

4

int getContentLength()

Renvoie la valeur du champ d'en-tête content-length.

5

String getContentType()

Renvoie la valeur du champ d'en-tête de type de contenu.

6

int getLastModified()

Renvoie la valeur du champ d'en-tête modifié en dernier.

sept

long getExpiration()

Renvoie la valeur du champ d'en-tête expiré.

8

long getIfModifiedSince()

Renvoie la valeur du champ ifModifiedSince de cet objet.

9

public void setDoInput(boolean input)

Passe la valeur true pour indiquer que la connexion sera utilisée pour l'entrée. La valeur par défaut est true car les clients lisent généralement à partir d'un URLConnection.

dix

public void setDoOutput(boolean output)

Passe la valeur true pour indiquer que la connexion sera utilisée pour la sortie. La valeur par défaut est false car de nombreux types d'URL ne prennent pas en charge l'écriture.

11

public InputStream getInputStream() throws IOException

Renvoie le flux d'entrée de la connexion URL pour la lecture à partir de la ressource.

12

public OutputStream getOutputStream() throws IOException

Renvoie le flux de sortie de la connexion URL pour l'écriture dans la ressource.

13

public URL getURL()

Renvoie l'URL à laquelle cet objet URLConnection est connecté.

Exemple

Le programme URLConnectionDemo suivant se connecte à une URL entrée à partir de la ligne de commande.

Si l'URL représente une ressource HTTP, la connexion est convertie en HttpURLConnection et les données de la ressource sont lues une ligne à la fois.

// File Name : URLConnDemo.java
import java.net.*;
import java.io.*;

public class URLConnDemo {

   public static void main(String [] args) {
      try {
         URL url = new URL("https://www.amrood.com");
         URLConnection urlConnection = url.openConnection();
         HttpURLConnection connection = null;
         if(urlConnection instanceof HttpURLConnection) {
            connection = (HttpURLConnection) urlConnection;
         }else {
            System.out.println("Please enter an HTTP 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();
      }
   }
}

Un exemple d'exécution de ce programme produira le résultat suivant -

Production

$ java URLConnDemo

.....a complete HTML content of home page of amrood.com.....