Ce que vous voulez faire est de développer un 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 retournerait 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()
try {
for(int i=0;i<test.length();i++){
JSONObject json_data = test.getJSONObject(i);
int id = json_data.getInt("id");
}
}
La demande web devrait fonctionner dans un autre thread, car cela peut prendre beaucoup de temps. Vous devez donc faire face à AsyncTask. Voici quelques ressources:
Painless Threading Multithreading for performance Hello Android Tutorial
Merci beaucoup. C'est très utile. Je suis familier avec REST et de fournir des api de repos pour les applications web. Je crois que j'aurai aussi besoin d'une classe Timer pour programmer une interrogation de données (si je veux rafraîchir quelque chose automatiquement)? – dzida
Je n'ai jamais utilisé une minuterie pour rafraîchir l'interface utilisateur, juste mettre à jour votre interface utilisateur sur certains événements, qui reste simple –
Je pense à l'application qui affiche la vue de permet de dire «tweets actuels». Je pense qu'il pourrait utiliser une minuterie pour le faire automatiquement à intervalles réguliers. De toute façon, implementig timer ne devrait pas poser de problème (je pense). – dzida