2010-11-22 10 views
3

Ich entwickle eine Android-Anwendung basierend auf Web-Services. Wie kann ich Abfrage ausführen (Server mit PHP und MySQL) basierend auf dem Element geklickt und erhalten Sie das Ergebnis aus dem Internet. Ich möchte auch einige Werte als Liste anzeigen (Listenlayout). Gibt es das überhaupt, um das zu erreichen?So erhalten Sie Werte für eine Android-Anwendung

Antwort

2

Was Sie tun möchten, ist die Entwicklung einer Rest API, die Daten für Ihre Android-App bietet. Z.B. Ihre Website enthält einige Inhalte, die Sie in Ihrer App verwenden möchten. Anschließend können Sie ein PHP-Skript schreiben, das diese Daten in einem bestimmten Format zurückgibt.

z. mysite.net/rest/fetchAllLocations.php?maybe_some_parameters

Dies würde Orte in z.B. json format, hier ist ein Beispiel, wie das aussieht:

[{"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"}]

Hier ist ein Beispiel für einen Rest api Anfrage:

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

Also, wenn Sie Ihre Ruhe api einrichten Sie mit dem Empfang, dass die Daten mit Ihrem android-Smartphone umgehen können. Ich benutze eine statische Methode, um diese Daten zu erhalten:

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

Nun das ist alles, wenn Sie Ihre Daten im JSON-Format haben Sie es nur analysieren müssen:

JSONArray test = (JSONArray) JsonGrabber.receiveData ()

Die Webanforderung sollte in einem anderen Thread ausgeführt werden, da es ein zeitaufwändiger Prozess sein kann. Sie müssen sich also mit AsyncTask beschäftigen. Hier sind einige Ressourcen:

Painless Threading Multithreading for performance Hello Android Tutorial

+0

Dank ArtWorkAD. Lass mich das versuchen. Wissen Sie, wie Sie XML mit SAX in Android analysieren können. Ich habe einen Link ausprobiert, konnte aber keine bessere Lösung finden. Ich möchte einige Kategoriennamen von einer XML-Datei erhalten und sie auf dem Android-Telefon auflisten. –

+1

Nun könnte man das in einer anderen Frage fragen –

Verwandte Themen