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());

      }

   }

}