1. Wir haben diesmal 2 Gewinnspiele zeitgleich für euch - Gewinne einmal ein UMI Plus E - Beim 2ten könnt ihr ein Nomu S30 gewinnen!
  1. Stacks, 21.05.2011 #1
    Stacks

    Stacks Threadstarter Neuer Benutzer

    Hallo alle miteinander,

    ich bin leider noch recht neu in der App-Programmierung und hatte mich jetzt mal an ein kleines Projekt getraut.
    Allerdings renne ich da wohl irgendwo im Kreis.
    Ich wollte eine kleine App schreiben, die über einen Webservice Daten aus einer Datenbank holt und diese einfach in einer Liste darstellt. (Datenbank ist in Apache-SQL geschrieben. Das funktiniert auch einwandfrei)
    Dafür hatte ich ein Androidprogramm geschrieben mit 3 Buttons beim Start. Sobald man einen Button drückt sollte ein gewisser Wert (hier jetzt 1-3) über einen Webservice übermittelt werden. Als Request sollte dann die Liste zurück kommen.
    Anfänglich hatte ich versucht das ganze wirklich rein über Webservice zu implementieren, allerdings stellte sich das als nicht so erfolgreich raus. Jetzt hatte ich das nochmal versucht mit JSON. Da bleib ich jedoch zur Zeit ein wenig hängen und weiß leider nicht so ganz weiter. Auch in Internetforen renne ich irgendwie im Kreis...
    Deswegen wollte ich mal ganz dreist Fragen, ob jemand mir mal ein paar Code-schnipsel hat für die Implementierung von JSON auf der Server Seite und auf der Client Seite...

    Vielen Dank schonmal.

    Gruß
    Stacks
     
  2. ko5tik, 21.05.2011 #2
    ko5tik

    ko5tik Android-Experte

    Serverside:

    Apache CXF -- Index

    Klientside:
    Code:
      HttpGet get = new HttpGet(pullUrl + "?since=" + since);
    
    
                            try {
                                HttpResponse response = httpClient.execute(get);
    
                                if (response.getStatusLine().getStatusCode() == 200) {
                                    // sending was successfull,  say that entry is saved
    
    
                                Log.d(LOG_TAG, "successfully pulled entries!!!");
    
    
                                    //  decode fresh entries and save them somewhere
                                    if (response.getEntity() != null) {
    
                                    JsonReader reader = new JsonReader(new StringReader(EntityUtils.toString(response.getEntity())));
                                    reader.setLenient(true);
                                    Log.d(LOG_TAG, "start unmarshalling");
                                    final List<? extends BaseHighscoreEntry> entries = JSONUnmarshaller.unmarshallArray(reader, getEntryClass());
                                    storage.addExternalEntries(entries);
                                    Log.d(LOG_TAG, "unmarshalling complete");
    
                                        // DO NOT SAVE it here,  because of race condition
                                        //storage.save();
                                    }
                                }
    
    
                            } catch (IOException e) {
                                Log.e(LOG_TAG, "io exception while retrieving shadow data", e);
                                e.printStackTrace();
                            }
    
    Das verwendet Google GSON & meine Datenbindungsbibliothek
    ( https://github.com/ko5tik/jsonserializer )

    Dies ist meine Highscore-Service, die ich in meiner Spielen verwende