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 :

Créer sa propre classe en utilisant httpGET et httpPOST (polymorphisme) ?


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 183
    Par défaut Créer sa propre classe en utilisant httpGET et httpPOST (polymorphisme) ?
    Hello tout le monde,


    Pour envoyer des requetes Http, j'utilise les classes de Apache :
    org.apache.http.client.methods.HttpPost et HttpGet pour envoyer mes requetes.

    Je souhaites me créé une petit classe qui gérerait les 2 methodes : post et get.

    Son utilisation, ca serait un truc dans le genre :
    Requete req new Requete ( "url a requeter", "post" );
    req.execute();

    J'ai un problème sur la méthode execute.

    Lorsque j'envoie une requete en POST, je fais ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HttpPost method = new HttpPost(uri);
    et quand j'envoie en GET
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HttpGet method = new HttpGet(uri);
    Pour que ma variable puis sauvegarder aussi bien une référence HttpGet et HttpPost,
    j'ai déclaré ma variable en tant que Object (la classe mère de tous les objets Java)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void Execute () {
    Object method = null;		
    if ("post".equalsIgnoreCase(this.methodStr))
    	method = (HttpPost)new HttpPost(uri);
    else
    	method = (HttpGet)new HttpGet(uri);

    Le problème est que method ne contient pas la méthode addHeader de HttpPost et HttpGet que j'utilise pour rajouter une entete HTTP.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    method.addHeader( "Authorization" , "Basic user");
    Dans l'exemple plus haut, method contient uniquement les methodes de base, celle de Object.

    Comment puis je m'y prendre ?

    La javadoc :
    http://hc.apache.org/httpcomponents-.../HttpPost.html
    http://hc.apache.org/httpcomponents-...s/HttpGet.html

  2. #2
    Membre éprouvé

    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 183
    Par défaut
    je pense qu'il s'agit de polymorphisme

  3. #3
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,


    Normal puisque tu le déclares en Object, et donc tu ne peux rien connaitre des particularités de chaque classe.


    Il faut utiliser un type commun qui définisse les méthodes dont tu as besoin.

    D'après la doc HttpRequestBase semble faire l'affaire...

    a++

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Dans un cas comme ça je préfère utiliser l'interface HttpRequest.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éprouvé

    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 183
    Par défaut
    oki merci à vous 2.

    j'ai essayé la solution de adiGuba en passant par HttpRequestBase. Cela fonctionne nickel pour ajouter une entete ave la methode addHeader mais je suis bloqué avec une autre méthode setEntity (si je me souviens bien, je vous tiens au courant)

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    De toute façon la méthode GET n'admet pas d'entité attachée. Dans ton cas il n'y a qu'avec les méthodes POST que ça s'applique.

    Dans ce cas-là, tu n'as pas le choix. Quand tu as un traitement à faire qui ne s'applique que sur un HttpPost, il faut caster l'objet en HttpPost.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/04/2012, 21h39
  2. Réponses: 1
    Dernier message: 12/07/2009, 09h51
  3. Créer ses propres classes génériques
    Par Louis-Guillaume Morand dans le forum C#
    Réponses: 6
    Dernier message: 22/05/2009, 16h57
  4. Réponses: 3
    Dernier message: 30/03/2007, 11h28

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