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

Java Discussion :

Erreur du code


Sujet :

Java

  1. #1
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Par défaut Erreur du code
    salut a tous j'ai un code qui me permet d'ouvrir une page web avec le plugin httpclien normalement ,cependant il m'affiche des exceptions.
    Code:
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
     
    import java.io.BufferedInputStream;
    import java.io.IOException;
    import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
    import org.apache.commons.httpclient.HttpClient;
    import org.apache.commons.httpclient.HttpException;
    import org.apache.commons.httpclient.HttpStatus;
    import org.apache.commons.httpclient.methods.GetMethod;
    import org.apache.commons.httpclient.params.HttpMethodParams;
    /**
     
    * Test de http client
     
    * 
     
    @author phymbert
    *
     
    */
     
    public class TestHtmlClient
    {
     
     
    	private static void processData(byte[]buffer,int i,int size,long total)
    	{
     
    	// Affiche le résultat dans la console
     
    	String data=new String(buffer,i,size);
     
    	System.out.println(data);
     
    	}
     
    public static void main(String[]args){
     
    // Le client HTTP
     
    HttpClient client =new HttpClient();
     
    // La méthode GET du protoccol HTTP
     
    GetMethod method=new GetMethod("http://www.google.com");
     
     
    // Provide custom retry handler is necessary
     
    method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
     
    new DefaultHttpMethodRetryHandler(1,false));
     
    try{
     
    // Execute la méthode HTTP
     
    int statusCode=client.executeMethod(method);
     
     
    // Vérifie le code de retour
     
    if(statusCode!=HttpStatus.SC_OK){
     
    return;
     
    }
     
     
    // Le buffer de lecture des données
     
    BufferedInputStream br=null;
     
     
    // 5 MO de buffer
     
    byte[]buffer=new byte[(int)(5*Math.pow(2,20))];
     
     
    // La taille total de la page
     
    long size=0;
     
     
    // La taille actuellement lue
     
    int read=-1;
     
    try{
     
    //Ouvre le buffer de lecture
     
    br=new BufferedInputStream(method.getResponseBodyAsStream());
     
     
    // C'est partit on lit la page
     
    while((read=br.read(buffer,0,buffer.length))>0){
     
    // Traite les données
     
    processData(buffer,0,read,size);
     
    size+=read;
     
    }
     
    }catch(Exception e){
     
    }finally{
     
    	if(br!=null)
     
    	try{
     
    	br.close();
     
    	}catch(Exception e){
     
    	}
     
    	}
     
     
    	}catch(HttpException e){
     
    	}catch(IOException e){
     
    	}finally{
     
    	// Release the connection.
     
    	method.releaseConnection();
     
    	}
     
    	}
     
     
     
    /**
    * Traite les données.
     
    * 
     
    @param buffer Le buffer contenant les données
    * 
     
    @param i L'index de départ des données à traiter
    * 
     
    @param size La taille des données à traiter
    * 
     
    @param total Le nombre de données total déjà traités
    */
    private static void processData(byte[]buffer,int i,int size,long total)
    	{
     
    	// Affiche le résultat dans la console
     
    	String data=new String(buffer,i,size);
     
    	System.out.println(data);
     
    	}
     
    }

    et voila l'exception que j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    	at org.apache.commons.httpclient.HttpClient.<clinit>(HttpClient.java:66)
    	at test.TestHtmlClient.main(TestHtmlClient.java:48)

  2. #2
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Il faut mettre l'API commons logging dans ton classpath. Tu as l'air d'utiliser httpclient, avec un peu de chance elle est pas loin.

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Par défaut
    merci pour votre reponse mais j'étais obligé d'ajouter encore l'api common codec.jar pour qu'il fonctionne parfaitement pour les pages distants.
    La probléme maintenant est dans les pages web locauw,quand je remplace l'adresse du page distant dans la fonction précedent par une adresse local (par exemple file://c:/index.html)
    une exception s'apparaitra :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Exception in thread "main" java.lang.IllegalStateException: unsupported protocol: 'file'
    	at org.apache.commons.httpclient.protocol.Protocol.lazyRegisterProtocol(Protocol.java:149)
    	at org.apache.commons.httpclient.protocol.Protocol.getProtocol(Protocol.java:117)
    	at org.apache.commons.httpclient.HttpHost.<init>(HttpHost.java:107)
    	at org.apache.commons.httpclient.HttpMethodBase.setURI(HttpMethodBase.java:280)
    	at org.apache.commons.httpclient.HttpMethodBase.<init>(HttpMethodBase.java:220)
    	at org.apache.commons.httpclient.methods.GetMethod.<init>(GetMethod.java:89)
    	at test.TestHtmlClient.main(TestHtmlClient.java:52)

  4. #4
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    C'est parce que vous semblez vouloir ouvrir en HTTP un fichier local... pourquoi faites-vous ça, ce n'est pas bien !

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Par défaut
    car dans mon application je donne la main aux utilisateur de selectionner une page html distant ou local ,si distant alors j'utilise le httpclient et s'il s'agit d'une page html ya-t-il une solution pour l'ouvrir avec httpclient car j'ai essayé avec le bufferedreader et la fonction openstream() mais elle n'etais pas trés efficace surtout pour les pages ayant un path trés long (bizarre)
    Toute autre information sera le bien venue

  6. #6
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Normalement ça fonctionne en local, sans HttpClient, avec file.toURI().toURL(). C'est pas comme ça chez toi ?

Discussions similaires

  1. Erreur système . Code : 1410 ?
    Par Interruption13h dans le forum C++Builder
    Réponses: 5
    Dernier message: 05/05/2006, 08h59
  2. [Debutant][XSL] Erreur de code programmation
    Par SkyDev dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 14/03/2006, 22h38
  3. Erreur : ce code n'est pas connu
    Par ruman dans le forum VBA Access
    Réponses: 17
    Dernier message: 13/02/2006, 11h37
  4. [MySQL] Erreur dans code php
    Par Badr3am dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 31/01/2006, 22h16
  5. Erreur de code
    Par petdelascar dans le forum C
    Réponses: 7
    Dernier message: 12/12/2005, 08h15

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