IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

lire un xml a partir d'une url et le retourner dans un string


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut lire un xml a partir d'une url et le retourner dans un string
    Bonjour,
    J'ai un projet java a realiser et je rencontre un probleme. Je dois realiser un parser pour des fichiers xml. Pour l'instant, j'essaie deja de lire un fichier xml a partir de son url et de retourner le resultat dans un string.
    Le code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.URL;
     
     
    /*
     * parser test for Pinnacle
     */
     
    public class Main  {
     
        /** Method get_page_content
         * Retrive the content of a page and return it in a string
         * @param xml_url
         * @return the content of a page or "" if it fails
         */
        protected static String get_page_content( String xml_url ) {
     
            try{
                URL url = new URL( xml_url );
                BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
                String page_content = "";
                while( br.ready() )
                    page_content = page_content + br.readLine() + '\n'; // '\n' is optional
                return page_content;
            } catch(Exception e){
                System.err.println(e.getMessage());
            }
     
            return null;
        }
     
    	public static void main (String args[]){
    		get_page_content("http://xml.pinnaclesports.com/xmlfeed.asp?contest=no");
    	}
    }


    L'url du fichier xml que je veux lire est : http://xml.pinnaclesports.com/xmlfeed.asp?contest=no

    J'obtiens l'erreur suivante en lancant mon programme :
    Connection timed out: connect

    Quelqu'un a-t-il deja ete confronte a ce genre d'erreur et pourrait-il m'aider?
    Merci

  2. #2
    Membre confirmé Avatar de Diablo_22
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 498
    Points : 490
    Points
    490
    Par défaut
    salut,
    si ta un pb de timeout c est que soit ton site est dead ou soit il met un certain temps a te répondre donc pour gerer le time out tu devrais je pense passer par un thread. Recherche sur le net tu as des parser XML fait en java open source

    Cours Java - Lecture d'un flux XML via SAX
    N'oubliez pas la balise

    est ton ami mais quand Google ne trouve pas quelque choses, il demande à Chuck Norris.

  3. #3
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Pour le problème de connection, vérifie qu'il n'y ai pas un proxy ou un firewall qui bloquerait ton programme...


    Quand à ton code il contient pas mal de petite erreur que je te conseille de corriger :
    • Le flux de lecture n'est pas fermé.
    • Tu ne devrais pas utiliser ready(), car il pourrait t'empêcher de lire le fichier en entier (son objectif est d'éviter d'attendre lorsque rien n'est disponible, ce qui n'est pas ton cas).
    • Tu utilises l'opération + pour créer ta chaine de caractère, ce qui peut être affreusement couteux en terme de performance (création de multiple chaine temporaire).
    • Tu lis ton fichier ligne par ligne, ce qui n'est pas forcément le mieux (surtout que tu ne fais pas un traitement par ligne). Une lecture par bloc serait plus approprié).


    Cela pourrait donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    	protected static String get_page_content( String xml_url ) {
     
            String result = null;
     
            try{
                URL url = new URL( xml_url );
                Reader r = new InputStreamReader(url.openStream());
                try {
                	// Buffer de lecture
                	char[] cbuf = new char[8192];
                	// Nombre de caractère lu
                	int len = 0;
                	// Buffer qui contiendra le contenu du fichier
                	StringBuffer content = new StringBuffer();
     
                	// Boucle de copie :
                	while ( (len=r.read(cbuf)) >= 0) {
                		content.append(cbuf, 0, len);
                	}
                	result = content.toString();
     
                } finally {
                	// Fermeture du flux (et donc de la connection)
                	r.close();
                }
            } catch(Exception e){
                System.err.println(e.getMessage());
            }
     
            return result;
        }
    a++

  4. #4
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    merci de vos reponses. Je vais essayer.

  5. #5
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Ca y est, ca fonctionne. cela venait effectivement du proxy.
    J'ai rajoute les deux lignes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        System.setProperty("proxyHost", _proxyHost);
        System.setProperty("proxyPort", "3128");
    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 01/12/2010, 22h33
  2. lire un fichier cvs à partir d'une url
    Par denis.ws dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 17/05/2008, 18h13
  3. Lire un fichier XML à partir d'une URL
    Par spaukensen dans le forum Langage
    Réponses: 3
    Dernier message: 18/03/2008, 11h03
  4. Lecture d'un XML à partir d'une URL
    Par staive dans le forum Langage
    Réponses: 10
    Dernier message: 10/01/2007, 17h31
  5. [DOM] [JAVA + XML] Ouvrir un fichier xml à partir d'une url
    Par Hell dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 09/06/2005, 00h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo