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

Android Discussion :

JAVA Android HTTP POST


Sujet :

Android

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 46
    Points : 40
    Points
    40
    Par défaut JAVA Android HTTP POST
    Bonjour,

    J'utilise cette fonction pour poster mes infos:

    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
     
        private class MyAsyncTask extends AsyncTask<String, Integer, Double>
        {
     
    		@Override
    		protected Double doInBackground(String... params) {
    			// TODO Auto-generated method stub
    			postData(params[0]);
    			return null;
    		}
     
    		public void postData(String valueIWantToSend) {
    			// Create a new HttpClient and Post Header
    			HttpClient httpclient = new DefaultHttpClient();
    			HttpPost httppost = new HttpPost("http://postcatcher.in/catchers/530b68c4ac12560200003f22");
     
    			try {
    				// Add your data
    				List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    				nameValuePairs.add(new BasicNameValuePair("myHttpData", valueIWantToSend));
    				httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
     
    				// Execute HTTP Post Request
    				HttpResponse response = httpclient.execute(httppost);
     
    			} catch (ClientProtocolException e) {
    				// TODO Auto-generated catch block
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    			}
    		}
    	}
    Cette fonction fonctionne très bien mon message est envoyé, mais il y a une sorte de titre avec.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nameValuePairs.add(new BasicNameValuePair("titre", valueIWantToSend));
    Je voudrai envoyé mes données sans ce "titre", j'ai cherché plein de tutos pour envoyé un simple message je ne trouve rien appart cette méthode.

    Avez vous une suggestion ou une autre fonction de HTTP post a me proposer, s'il vous plait?

  2. #2
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Si tu ne veux pas envoyer de données, enlèves simplement ces lignes :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("myHttpData", valueIWantToSend));
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 46
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message
    Si tu ne veux pas envoyer de données, enlèves simplement ces lignes :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("myHttpData", valueIWantToSend));
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    Merci Hephaistos007,
    Je veux envoyer seulement valueIWantToSend et pas myHttpData. Ça ne sert a rien de poster quelque chose sans données.
    Bien sur j'ai essaye de l'enlever mais j'ai l'impression que je ne peut envoyer que de cette manière en JAVA.

    En fait j'envoie des données XML a un service web et j'ai besoin d’envoyé exactement ce que je veux sinon mon service ne prend pas en compte mes données.

    Merci quand meme

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 33
    Points : 47
    Points
    47
    Par défaut
    Si j'ai bien compris tu dois envoyé un simple String au serveur ?

    tu peux alors utilisé un StringEntity à la place de l'UrlEncodedFormEntity qui lui fonctionne sous forme de clé/valeur.

    edit : en visitant le liens de ta requête on dirait que celui-ci attend du contenu au format JSON

    si c'est le cas voici un tuto en anglais pour envoyer des données au format JSON avec android : ICI

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 46
    Points : 40
    Points
    40
    Par défaut JAVA Definir Headers Http post
    Merci beaucoup pour l'info Namastaz,

    Ça a l'air d’être ça, je reçois un message mais avec un String vide.
    Je test mes post avec postcatcher.in donc oui je doit les mettre en format json, mais je doit les poster en XML pour mon appli.

    Sait tu comment definir les paramètres d'en-tete? je pense que c'est ce qu'il me manques, je regarde ton tuto en meme temps.

    Merci beaucoup!

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 33
    Points : 47
    Points
    47
    Par défaut
    pour l'ajout d'un header à ta requête httpost utilise la méthode setHeader

    si ce que le serveur attend n'est pas du json mais du xml essaye :

    httpPost.setHeader("Content-type", "application/xml");

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 46
    Points : 40
    Points
    40
    Par défaut JAVA Simple HTTP POST
    Alléluia! Alléluia! Alléluia!

    Tu m'a bien aider merci,

    Il faut ajouter ça, une autre balise (Accept) pour remplacer celle existante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    httppost.setHeader("Accept", "application/x-www-form-urlencoded; encoding='utf-8'");
    httppost.setHeader("Content-type", "application/x-www-form-urlencoded; encoding='utf-8'");
    Voici la methode pour poster un message, pour ceux que ca interesse:

    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
     
        private class MyAsyncTask extends AsyncTask<String, Integer, Double>{
     
    		@Override
    		protected Double doInBackground(String... params) {
    			// TODO Auto-generated method stub
    			postData(params[0], params[1]);
    			return null;
    		}
     
    		protected void onPostExecute(Double result){
    			//pb.setVisibility(View.GONE);
    			Toast.makeText(getApplicationContext(), "command sent", Toast.LENGTH_LONG).show();
    		}
     
    		public void postData(String adress, String message) {
     
    			// Create a new HttpClient and Post Header
    			HttpClient httpclient = new DefaultHttpClient();
     
    			HttpPost httppost = new HttpPost(adress);
     
    			try {
    				// Add your data
    				httppost.setEntity(new StringEntity(message));
    				// Set the header 
    				httppost.setHeader("Accept", "application/x-www-form-urlencoded; encoding='utf-8'");
    				httppost.setHeader("Content-type", "application/x-www-form-urlencoded; encoding='utf-8'");
     
    				// Execute HTTP Post Request
    				HttpResponse response = httpclient.execute(httppost);
    				String status = response.getStatusLine().toString();
     
    			} catch (ClientProtocolException e) {
    				// TODO Auto-generated catch block
     
    				Log.d(CLASS_TAG + "showOnScreenMessage", "Message not sent!" + e.getMessage());
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    			}
    		}
    	}
    Et pour l'appeler:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String adress = "http://postcatcher.in/catchers/xxxxxxxxxxxxxxxxx";
     
            String message = " blabla en XML...  ";
     
            new MyAsyncTask().execute(adress, message);
    Bon codage

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

Discussions similaires

  1. [NDK] JAVA HTTP POST + réponse
    Par Benmaster1 dans le forum Android
    Réponses: 2
    Dernier message: 05/03/2014, 18h13
  2. Java & Http POST
    Par zentro dans le forum Général Java
    Réponses: 0
    Dernier message: 20/05/2010, 12h43
  3. Requette HTTP POST
    Par CrazySeb dans le forum C++
    Réponses: 7
    Dernier message: 25/02/2006, 15h17
  4. HTTP POST
    Par jmjmjm dans le forum Web & réseau
    Réponses: 17
    Dernier message: 12/11/2005, 22h05
  5. [HTTP][POST] passassion de variable
    Par Yodalf dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 04/09/2004, 21h09

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