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 :

Utilisation de l'API HttpClient et l'API HttpCore


Sujet :

Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Par défaut Utilisation de l'API HttpClient et l'API HttpCore
    Bonjour,

    J'aimerai réaliser un programme envoyant un message et des données à un serveur. Pour réaliser cela j'ai décider d'utiliser l'API HttpCore, mais j'ai un peu du mal.

    J'ai déjà regarder le tutoriel proposé par apache, mais il y a certaines choses que j'ai du mal à comprendre.

    Tout d'abord, j'ai du mal a voir la différence entre l'API HttpClient et l'API HttpCore. Ensuite je comprends pas comment envoyer de message avec cet API.

    Si quelqu'un pouvait m'éclairer ce serait gentil.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    L'HTTPClient devrait être suffisant. L'API HTTPCore est de plus bas niveau.

    Mais tu dois tout d'abord comprendre le protocole HTTP avant d'utiliser cette API, notamment les commandes principales commandes POST et GET.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Par défaut
    J'ai regardé quelques tutoriels sur le protocol HTTP. D'après ce que j'ai compris on peut réaliser des requetes et recevoir des reponses lorsqu'on envoie une requete.
    J'ai donc besoin d'envoyer une requete contenant mon message.

    Pour faire cela je doit utiliser la méthode post mais je comprends pas comment ajouter mon message dans ce post en utilisant HTTPClient.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Par défaut
    Après quelques recherches voici ce que j'ai trouvé sur l'utilisation de l'API HTTPClient:

    J'utilise la classe HttpPost pour envoyer une requete Post auquel j'ajoute une entity. Voici mon code (je me suis inspiré de l'exemple fourni par apache):

    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
    public static void main(String[] args) throws Exception {
            args = new String[] { "MessageAEnvoyer.txt" };
            if (args.length != 1) {
                System.out.println("File path not given");
                System.exit(1);
            }
            HttpClient httpclient = new DefaultHttpClient();
     
            HttpPost httppost = new HttpPost("http://localhost:80"
                    + "/servlets-examples/servlet/RequestInfoExample.txt");
     
            File file = new File(args[0]);
     
            InputStreamEntity reqEntity = new InputStreamEntity(
                    new FileInputStream(file), -1);
            reqEntity.setContentType("binary/octet-stream");
            reqEntity.setChunked(true);
            // It may be more appropriate to use FileEntity class in this particular
            // instance but we are using a more generic InputStreamEntity to demonstrate
            // the capability to stream out data from any arbitrary source
            //
            // FileEntity entity = new FileEntity(file, "binary/octet-stream");
     
            httppost.setEntity(reqEntity);
     
            System.out.println("executing request " + httppost.getRequestLine());
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity resEntity = response.getEntity();
     
            System.out.println("----------------------------------------");
            System.out.println(response.getStatusLine());
            if (resEntity != null) {
                System.out.println("Response content length: "
                        + resEntity.getContentLength());
                System.out.println("Chunked?: " + resEntity.isChunked());
            }
            if (resEntity != null) {
                resEntity.consumeContent();
            }
     
            // When HttpClient instance is no longer needed,
            // shut down the connection manager to ensure
            // immediate deallocation of all system resources
            httpclient.getConnectionManager().shutdown();
        }

    Lorsque je compile ce code je reçois ce message:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    executing request POST http://localhost:80/servlets-examples/servlet/RequestInfoExample.txt HTTP/1.1
    ----------------------------------------
    HTTP/1.1 200 OK
    Response content length: 24
    Chunked?: false
    Est ce que cela suffit à affirmer que mon message a bien été envoyé? J'aimerai aussi savoir comment exploiter ce message depuis mon serveur.

  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Logiquement un code HTTP 200 signifie que tout s'est bien passé coté serveur, par contre ça ne dit pas grand chose de ce que le serveur à fait.

    En cas tu peux essayer de voir le contenu de la response en elle même (à savoir ce que tu peux récupérer par la méthode getContent de la response) si toutefois ton serveur est censé renvoyer quelque chose.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Par défaut
    Pour le moment je peux travailler que coté client. Je testerai mon application des que je le pourrais. En tout cas merci beaucoup pour votre aide!

Discussions similaires

  1. [API HttpClient d'Apache] Problème d'import
    Par Mister_Kp dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 02/09/2010, 09h52
  2. Utiliser l'API HTTPClient -Apache-
    Par Sake_reflex dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 11/03/2010, 10h17
  3. installation api httpclient
    Par supernicoco dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 27/01/2010, 12h10
  4. Utiliser un controle activeX directement via les API
    Par sivaller dans le forum Windows
    Réponses: 2
    Dernier message: 31/05/2009, 12h45
  5. [API] HttpClient
    Par eyghon dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 07/12/2005, 00h22

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