2010-11-22 4 views
3

Je développe une application android basée sur les services web. Comment puis-je exécuter une requête (serveur utilisant PHP et MySQL) en fonction de l'élément cliqué et obtenir le résultat sur le web. Je veux aussi montrer certaines valeurs sous forme de liste (mise en page). Y a-t-il de toute façon à accomplir cela?Comment obtenir des valeurs pour une application android

Répondre

2

Ce que vous voulez faire est de développer une API de repos qui fournit des données pour votre application Android. Par exemple. Votre site Web contient du contenu que vous souhaitez utiliser dans votre application. Vous pouvez alors écrire un script php qui renvoie simplement ces données dans un format spécifique.

E.g. mysite.net/rest/fetchAllLocations.php?maybe_some_parameters

Cela retournera des emplacements dans, par ex. format json, voici un exemple à quoi cela ressemble:

[{"id": 1, "shop_lng": 8.5317153930664, "shop_lat": 52.024803161621, "shop_zipcode": 33602, "shop_city": "Bielefeld", "shop_street": "Arndtstra \ u00dfe", "shop_snumber": 3, "shop_name": "M \ u00fcller", "shop_desc": "Kaufhaus"}]

Voici un exemple pour une demande de repos api:

http://shoqproject.supervisionbielefeld.de/public/gateway/gateway/get-shops-by-city/city/Bielefeld

Alors, quand vous avez votre repos api mis en place, vous pouvez traiter de recevoir ces données avec votre téléphone Android. J'utilise une méthode statique pour obtenir ces données:

public class JsonGrabber{ 

public static JSONArray receiveData(){ 
    String url = "your url"; 
    String result = ""; 

    DefaultHttpClient client = new DefaultHttpClient(); 
    HttpGet method = new HttpGet(url); 
    HttpResponse res = null; 

    try { 
     res = client.execute(method); 
    } catch (ClientProtocolException e1) { 
     e1.printStackTrace(); 
    } catch (IOException e1) { 
     e1.printStackTrace(); 
    } 

    try{ 
     InputStream is = res.getEntity().getContent(); 
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1")); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
     } 
     is.close(); 
     result = sb.toString(); 
    }catch(Exception e){ 
     Log.e("log_tag", "Error converting result "+e.toString()); 
    } 

    JSONArray jArray = null; 

    try{ 
     jArray = new JSONArray(result); 
    }catch(JSONException e){ 
      Log.e("log_tag", "Error parsing data "+e.toString()); 
    } 

    return jArray; 
} 
} 

Eh bien c'est tout, une fois que vous avez vos données au format JSON il vous suffit de l'analyser:

JSONArray test = (JSONArray) JsonGrabber.receiveData (La requête Web doit s'exécuter dans un autre thread, car cela peut prendre beaucoup de temps.

try { 
    for(int i=0;i<test.length();i++){ 
    JSONObject json_data = test.getJSONObject(i); 
    int id = json_data.getInt("id"); 
    } 
} 

Vous devez donc faire face à AsyncTask. Voici quelques ressources:

Painless Threading Multithreading for performance Hello Android Tutorial

+0

Merci ArtWorkAD. Laisse-moi essayer ça. Savez-vous comment analyser XML en utilisant SAX dans Android. J'ai essayé un lien mais je n'ai pas trouvé de meilleure solution. Je veux obtenir quelques noms de catégorie à partir d'un fichier XML et le lister dans le téléphone android. –

+1

bien que vous pourriez demander cela dans une autre question –

Questions connexes