Consommation d'un Web Service
REST
(méthode post) dans une application Android
Description
Un web service, sous NetBeans, a été ajouté. Ce web service permet d'insérer, dans la base FBCN, une occurrence dans la table Course.
Détails du web service :
@POST // Méthode HTTP utilisée pour ajouter une course
@Path("insertion")
public int inserCourse(@QueryParam("nom") String pnom, @QueryParam("lieu") String plieu, @QueryParam("date") String pdate, @QueryParam("heureDep") String pheureDep, @QueryParam("distance") float pdistance, @QueryParam("prix") int pprix, @QueryParam("challenge") int pchallenge)
{
int nb = 0;
nb = GestionCourse.InsertionCourse(pnom, plieu, pdate, pheureDep, pdistance, pprix, pchallenge);
return nb;
}
Consommation du web service dans une application Android
Description de la tâche asynchrone appelée :
private class AccesWebServicesPost extends AsyncTask<Void, Void, HttpResponse> {
@Override
protected void onPreExecute() {
super.onPreExecute();
Toast.makeText(getApplicationContext(), "Début du traitement asynchrone post", Toast.LENGTH_LONG).show();
}
@Override
protected HttpResponse doInBackground(Void... params) {
try
{
HttpClient c=new DefaultHttpClient();
HttpPost req=new HttpPost(url);
req.addHeader("Content-Type", typeDeContenu);
HttpResponse reponse = c.execute(req);
return reponse;
}
catch (Exception ex)
{
System.out.println("ERREUR TACHE ASYNCHRONE POST : " + ex.getMessage());
return null;
}
}
}
La tache asynchrone sera appelée, dans cet exemple, lors du click sur un bouton :
private class ClickSurBoutonInsere implements OnClickListener
{
@Override
public void onClick(View v)
{
// valeurs des paramètres à récupérer dans des zones de textes plutôt "qu'en dur" comme ici
String param1 = URLEncoder.encode("Corrida de Paimpol");
String param2 = URLEncoder.encode("Paimpol");
String param3 = URLEncoder.encode("2015-11-21");
String param4 = URLEncoder.encode("19:00");
String param5 = URLEncoder.encode("9");
String param6 = URLEncoder.encode("10");
String param7 = URLEncoder.encode("0");
param = "nom=" + param1 + "&lieu=" + param2 + "&date=" + param3 + "&heureDep=" + param4 + "&distance=" + param5 + "&prix=" + param6 + "&challenge=" + param7;
url = url_base + "/insertion?" + param;
typeDeContenu = "text/plain";
//Lancement de la tache asynchrone
AccesWebServicesPost accesWS2 = new AccesWebServicesPost();
try
{
// Recupération de la valeur de retour (de type HttpResponse)
HttpResponse rep2 = accesWS2.execute().get();
BufferedReader rd = new BufferedReader(new InputStreamReader(rep2.getEntity().getContent()));
String retourWS = rd.readLine();
txtAffichage.setText("Nombre de ligne(s) insérée(s) : " + retourWS);
}
catch (Exception e)
{
System.out.println("ERREUR SUR INSERTION : " + e.getMessage());
}
}
}