La classe URL


La classe URL

Cette classe propose une interface de haut niveau pour accéder aux informations du Web en utilisant des URLs.

Pour créer un objet de la classe URL nous disposons de quatre constructeurs :

Exemple :

Les trois URLs suivantes représentent la même ressource.
new URL("http://massena.univ-mlv.fr/index.html");
new URL("http","massena.univ-mlv.fr",80,"index.html");
new URL("http://massena.univ-mlv.fr/","index.html");

Les méthodes suivantes permettent de comparer deux URLs en incluant ou non l'ancre:
public boolean sameFile(URL other)
public boolean equals(Object other)

Pour manipuler les composants de l'URL un ensemble de méthodes est proposé :

Une fois l'objet URL construit, pour accéder aux informations contenues dans l'URL, il faut construire un objet URLConnection en utilisant la méthode :

public URLConnection openConnection() throws IOException

Cette méthode crée (si elle n'existe pas déjà) un objet permettant de créer une connexion vers la ressource référée par l'URL. Cette méthode invoque le bon gestionnaire de protocole (HTTP par exemple).

Exemple :

URLConnection connexion = url1.openConnection() ;

Il est possible, si l'on ne désire pas d'information sur l'objet contenu de le récupérer directement avec la méthode de la classe URL :
public final Object getContent () throws IOException
qui est un raccourci pour :
openConnection().getContent()

Exemple :

public class Url {
public static void main(String[] argv){
 try{
 URL url = new URL("http://massena.univ-mlv.fr/~roussel);
 String Object texte = (String) url.getContent();
 System.out.println(texte);
 }
 catch(MalformedURLException e){
 System.out.println(e);
 }
 catch(IOException e){
 System.out.println(e);
 }
 }
}

La Classe URLConnection

URLConnection est une classe abstraite qui propose une interface simple pour manipuler les entêtes et le contenu d'une URL, d'une façon indépendante du protocole. Un objet de cette classe est construit par l'appel à la méthode openConnection() sur un objet de la classe URL.

La première chose à faire consiste à spécifier les entêtes de requêtes au moyen de la méthode suivante :
public void setRequestProperty(String key, String value)
D'autres méthodes raccourcis sont disponibles :
public long getIfModifiedSince() ...

Il faut ensuite ouvrir la connexion :
public abstract void connect() throws IOException

Il est alors possible de récupérer chacune des entêtes par une des méthodes suivantes :

Les méthodes suivantes sont des raccourcis pour les entêtes les plus courantes :

Pour récupérer le contenu du document il suffit d'utiliser la méthode :
public Object getContent() throws IOException

D'autres intéraction de plus bas niveau sont également possible en récupérant les flux d'entrée et de sortie sur la connexion.
public InputStream getInputStream() throws IOException
public OutputStream getOutputStream() throws IOException


Exemple :

int len = connexion.getContentLength();
InputStream input = connexion.getInputStream();
for(;len != 0; len--)
 System.out((char)input.read());
....

Écrire ses gestionnaires de protocole ou de contenu