Attention, le contenu cet article est peut-être obsolète !
Une classe permettant de réaliser une requête POST avec AndroidCet 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;
}
}