Dynamic-Mess.com


"The world is a dynamic mess of jiggling things..."

Effectuer une requête POST avec Android

Article posté le 04-08-2014 dans la catégorie Android

Cet article nécessite de maitriser les tâches asynchrones.

Tout d'abord, il vous faut créer un tableau associatif contenant les noms des variables à envoyer en POST ainsi que leurs valeurs :

List valeursPOST = new ArrayList(); // Création du tableau
valeursPOST.add(new BasicNameValuePair("Nom", Nom.getText().toString())); // Ajoutons des valeurs
valeursPOST.add(new BasicNameValuePair("Prenom", Penom.getText().toString()));

Ensuite, je vous ai mâché le travail. Vous n'avez plus qu'à utiliser la classe en bas de page. Pour l'utiliser, voici comment procéder :

    String urlDuServeur = "http://www.mon-site.com";
    postRequest maRequete = new postRequest();
    maRequete.sendRequest(urlDuServeur, valeursPOST); // Envoie la requête POST

Dans la tâche aynchrone qui va gérer l'envoi, vous pourrez utiliser dans la méthode onPostExecute les méthodes suivantes : 

getResultat() // Retourne le code HTML affiché par le serveur
getHeader() // Retourne le code HTTP retourné par le serveur

Voici le contenu de la classe :


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import android.util.Log;
public class postRequest {
    private String Url = null;
    private List pairs;
    private String Resultat = "";
    private String Header = "";
    
    public postRequest(){
    }
    public void sendRequest(String urlPageContact, List pairs) {
        this.Url = urlPageContact;
        this.pairs = pairs;
        this.doIt();
    }
    protected Void doIt() {
        // Création du client http et du header
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(this.Url);
        try {
            // Ajout des données à la requête
            httppost.setEntity(new UrlEncodedFormEntity(this.pairs));
            // Excécution de la requête
            HttpResponse response = httpclient.execute(httppost);
            // Lecture de la réponse
            if (response.getEntity().getContentLength() != 0) {
                StringBuilder sb = new StringBuilder();
                try {
                    InputStream is = response.getEntity().getContent();
                    int codeHeader = response.getStatusLine().getStatusCode();
                    Log.i("Code Header : ", String.valueOf(codeHeader));
                    Header = String.valueOf(codeHeader);
                    BufferedReader reader = new BufferedReader(
                            new InputStreamReader(is));
                    String line = null;
                    while ((line = reader.readLine()) != null) {
                        sb.append(line);
                    }
                    Log.i("Resultat : ", sb.toString());
                    Resultat = sb.toString();
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } else {
                Log.e("Resultat : ",
                        "Pas de contenu affiché dans le body de la réponse");
                Resultat = "Pas de contenu affiché dans le body de la réponse";
            }
        } catch (ClientProtocolException e) {
            Resultat = "Impossible d'effectuer la tâche";
        } catch (IOException e) {
            Resultat = "Impossible d'effectuer la tâche";
        }
        return null;
    }
    
    public String getResultat(){
        return this.Resultat;
    }
    
    public String getHeader(){
        return this.Header;
    }
}

 


Tweet
comments powered by Disqus