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é :
public String getProtocol(): retourne le protocole ;
public String getHost() : retourne le nom de la machine ;
public int getPort() : retourne le numéro de port ;
public String getFile() : retourne la partie fichier ;
public String getRef() : retourne la référence ou ancre dans le fichier ("#ref") ;
public String toExternalForm() : retourne la forme canonique de l'URL.
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); } } }
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 :
public String getHeaderField(String name) : retourne l'entête dont le nom est passé en paramètre si elle est présente et null sinon.
public int getHeaderFieldInt(String name, int default)
public long getHeaderFieldDate(String name,long default)
public String getHeaderFieldKey(int n)
public String getHeaderField(int n)
Les méthodes suivantes sont des raccourcis pour les entêtes les plus courantes :
public int getContentLength ()
public String getContentType ()
public long getDate ()
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()); ....