package com.edou.gmail.android.rest; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.app.ProgressDialog; import android.os.AsyncTask; import android.os.Bundle; import android.view.Menu; import android.widget.ListView; public class CategoriesActivity extends Activity { ListView lst; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_categories); lst = (ListView)findViewById(R.id.listView1); new LongTask().execute(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.categories, menu); return true; } protected class LongTask extends AsyncTask { List categories; ProgressDialog p; @Override protected void onPreExecute() { super.onPreExecute(); //Avant l'execution du processus long (Thread principal) p = new ProgressDialog(CategoriesActivity.this); p.setTitle(R.string.app_name); p.setMessage("Il est temps d'arreter le cours....."); p.setCancelable(true); p.show(); } @Override protected void onPostExecute(Void resp) { super.onPostExecute(resp); CategorieAdapter adapter = new CategorieAdapter(CategoriesActivity.this, categories); lst.setAdapter(adapter); p.dismiss(); //Apres l'execution du processus long (Thread principal) } @Override protected Void doInBackground(String... arg0) { try { //Execution du processus long (Thread secondaire) //Créez un client HTTP : HttpClient client =new DefaultHttpClient(); //Créez une requete HTTP de type GET HttpGet request =new HttpGet("http://10.154.107.235:8080/Bibliotheque/webresources/categorie"); //Ajoutez le type de représentation souhaitée dans l'en tête de la requête request.addHeader("Accept","application/json"); // Exécutez la requête et récupérez la réponse HttpResponse response; response = client.execute(request); //Analysez le statut de la réponse int code = response.getStatusLine().getStatusCode(); if(code==200){//La requete a atteint le serveur et une réponse a été renvoyée //Récupérez le contenu de la réponse BufferedReader rd =new BufferedReader(new InputStreamReader(response.getEntity().getContent())); StringBuffer result =new StringBuffer(); String line =""; while((line = rd.readLine())!=null){ result.append(line); } categories = new ArrayList(); //Afficher la réponse dans la console System.out.println(result.toString()); JSONArray array = new JSONArray(result.toString()); for(int i = 0; i< array.length(); i++){ JSONObject object = array.getJSONObject(i); String nom = object.getString("nom"); String description = object.getString("description"); long id = object.getLong("id"); Categorie c = new Categorie(); c.setDescription(description); c.setNom(nom); c.setId(id); categories.add(c); } } else{ //Une erreur est survenue (500, 404 ...) } } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } } }