Blue Flower

Chercher

Exemple sur les Sockets

Le programme suivant connecte un flot d'entrée à une ressource Web spécifiée par son URL, transforme ce flot d'octets en un flot de caractères et le place dans un tampon (buffer); les lignes successivement lues sur ce flot d'entrée sont copiées sur la sortie standard de l'application (jusqu'à ce quereadLine() retourne null).

  • On a besoin donc d'une instance de la classe URL (java.net.URL URL)
  • On fera appel à la méthode openStream (java.net.URL.openStream()); elle permet d'ouvrir un flux d'octets en entrée

Premier Programme

import java.net.URL;
import java.net.MalformedURLException;
import java.io.*;
class URLDeLecture {
  public static void main(String[] args) 
    throws MalformedURLException, IOException {
    URL url = new URL("http://www.singaomara.com/tutorial/montext.txt");
    BufferedReader in = 
      new BufferedReader(
        new InputStreamReader(
          url.openStream()));
    String ligne;
    while ((ligne = in.readLine()) != null)
      System.out.println(ligne);  
    in.close();
  }
}

Dans cette classe on a l'instance de la classe URL qui servira pour:
Déclarer et initialiser la classe url comme suit;
URL url=new URL("http://www.singaomara.com/tutorial/montext.txt");
La méthode url.openStream() retourne une instance de la classe InputStream qui servira de paramètre à une instance de la classe InputStreamReader au moment de son initialisation; La classe BufferedReader va utiliser pour son initilisation ce que retourne new InputStreamReader().
Si on recapitule on a :

 URL url = new URL("http://www.singaomara.com/tutorial/montext.txt");
 BufferedReader in = 
      new BufferedReader(
        new InputStreamReader(
          url.openStream()));

et c'est là l'essentiel du programme. La boucle while sert à la saisie du flux d'entrée .

deuxième programme

Pour récupérer des données à partir d'une url, la classe URL fournit les méthodes openConnection, openStream et getContent. Pour bien comprendre leur fonctionnement il faut bien savoir ce qu'elles retournent dès qu'on les invoque. Considérons la méthode openConnection et voyons sa déclaration dans l'API java :
public URLConnection openConnection ()throws IOException{// ici on a le corps de la méthode}
On voit bien qu'elle retourne une instance de la classe URLConection qui représente une connexion vers l'objet désigné par l'url. Ceci sera expliqué prochainement dans le chapitre URLConnection.

En ce qui concerne la méthode getContent () on voit bien qu'elle retourne une instance de la classe Object qui est en faite le contenu de l'url.
 public final Object getContent () throws IOException {// ici on a le corps de la méthode}
Retourne le contenu de l'url. C'est un raccourci pour openConnection().getContent()

La troisième méthode qu'on a déjà vu d'ailleurs, établit la communication en ouvrant un InputStream cela est équivalent à l'utisation de openConnection().openStream() à la seule différence que si on utilise openConnection on a pense utiliser d'autres fonctionnalités pour gérer l'URL
 public final InputStream openStream () throws IOException {// ici on a le corps de la méthode}
L'exemple ci-dessus est encore une illustration d'une utilisation de URL; l'url qu'on aura à traiter sera saisie au clavier au moment de lancer le Programme.

   import java.io.*;
   import java.net.*;
   public class OpenURL {
      public static void main(String[] args) {
         BufferedReader in  = null;
         try {
            if (args.length != 1) {
               System.out.println("usage: java OpenURL <URL>");
               System.exit(0);
            }
            URL url = new URL(args[0]);
            in = new BufferedReader(new InputStreamReader(url.openStream()));
            String s;
            while ( (s=in.readLine()) != null) 
				System.out.println(s);
         }
            catch (IOException e) {System.out.println("Erreur1");}
            catch (Exception e) {System.out.println("Erreur2");}
            finally {
               try { if (in != null) in.close();  }
                  catch (Exception e) {System.out.println("Erreur3");}
            }
      }
   }