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

Attention, le contenu cet article est peut-être obsolète !

Une classe permettant de réaliser une requête POST avec 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;
    }
}

 


Cet article vous a plu? Découvrez d'autres articles :


comments powered by Disqus