Publié le 12/05/2010
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
0 plus
4 commentaires

Ouvrir une URL et charger son contenu au format texte

Pour charger le code source d'une page HTML, le langage JAVA propose plusieurs packages autour de la communication réseau. Dans cet article, nous utilisons l'objet URLConnection permettant d'ouvrir une URL et charger son contenu.

Charger une page HTML avec JAVA

Voici un exemple d'utilisation, les redirections y compris les pages 301 sont traitées automatiquement par la class URLConnection. Le contenu de la page HTML est récupéré dans une variable String au moyen d'un StringBuilder.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.logging.Level;
import java.util.logging.Logger;
 
/**
 * Charger une page HTML
 * http://www.fobec.com/java/908/ouvrir-une-url-charger-son-contenu-format-texte.html
 */
 
public class HTTPLoader {
/**
 * Open a url and read text data, for example html file
 * @param _url url
 * @return String file content
 */
    public static String getTextFile(String _url) {
        BufferedReader reader = null;
        try {
            URL url = new URL(_url);
            URLConnection urlConnection = url.openConnection();
            reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line);
                sb.append("\n");
            }
            return sb.toString();
        } catch (IOException ex) {
            Logger.getLogger(HTTPLoader.class.getName()).log(Level.SEVERE, null, ex);
            return "";
        } finally {
            try {
                if (reader != null) {
                    reader.close();
                }
            } catch (IOException ex) {
                Logger.getLogger(HTTPLoader.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
} 

Charger l'URL de la page index

Pour illustrer le chargement du code source, voyons comment obtenir le code source la page index du site Fobec.com.

System.out.print(HTTPLoader.getTextFile("http://fobec.com/"))

Pour charger une URL, une autre méthode consiste à utiliser directement les sockets en JAVA. Dans ce cas, il faudrait gérer soi-même les codes HTTP par exemple les redirections et les erreurs de communication réseau.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.
avatar Tom

Publié par Tom

le 04/05/2011 à 17:28:13

Hello!
Cependant, mon Eclipse ne reconnait pas HttpLoader comme type valide...
Comment faire pour que ca marche?
Merci d'avance pour ton aide!
@+

avatar Fobec

Publié par Fobec

le 04/05/2011 à 18:01:53

oups quelques lignes manquent sur ce code ! ... l'exemple est corrige et complet
Merci Tom

avatar Verkork

Publié par Verkork

le 01/06/2011 à 00:03:14

Le probleme c'est que ce code ne convient pas quand une partie de la page est dynamique, ie qu'elle est rafraichit toutes les minutes par exemple. Par exemple pour une telle page, c'est plus compliquee: [modere]

avatar skud

Publié par skud

le 04/11/2011 à 17:16:14

La methode getTextFile() etant statique, il faut donc l'appeler de maniere statique. Modifier l'exemple de la maniere suivante

System.out.print(HTTPLoader.getTextFile('http://fobec.com/CMS/index.php'));

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
java - sources
Mise a jour
12/05/2010
Visualisation
vu 6827 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 264 articles
|BIO_PSEUDO|
Commentaires récents

Publié par mohamed dans php5

code comment publier tous les ficher en php5 et html5

Publié par roundge dans php5

Bien ! Merci pour cette petite classe en php bien pratique !
J'avais 2000 photos libres de droits à télécharger sur un site, dans un dossier ou les fichiers ne sont pas list&e...

Publié par amelia dans java

pour 30 sa donne 1346269

Publié par eldiablo dans java

Après recherches, il manquait simplement une ligne à cette classe et à la mienne. Il suffit d'ajouter
df.setLenient(false);
juste après
SimpleDateFormat df = new...

Publié par titi dans tuto

test de ce truc! eh ben exigeant en plus