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