Wir stellen eine Verbindung zu einem Server her, lesen und analysieren JSON, um Informationen zurückzugeben und sie schließlich in der Datenbank auf unserem Gerät zu speichern.
Für diejenigen, die keinen Server haben, auf dem die Tests durchgeführt werden sollen, können wir unser Gerät und einen WLAN-Router verwenden, um Tests ohne Probleme durchzuführen.
Als Erstes öffnen wir ein Programm, um den Eclipse-, Betbeans-Code oder den Code zu bearbeiten, der uns am besten gefällt. In einem neuen Projekt erstellen wir eine neue Klasse namens JSONManager mit der folgenden statischen und öffentlichen Methode.
public static JSONObject getJSONfromURL (String url) { InputStream ist = null; String result = ""; JSONObject json = null; versuche { HttpClient httpclient = new DefaultHttpClient (); HttpPost httppost = new HttpPost (url); HttpResponse response = httpclient.execute (httppost); HttpEntity entity = response.getEntity (); is = entity.getContent (); } catch (Ausnahme e) {} versuche { BufferedReader reader = new BufferedReader (neuer InputStreamReader (iso-8859-1), 8); StringBuilder sb = new StringBuilder (); String line = null; while ((line = reader.readLine ())! = null) { sb.append (Zeile + " n"); } is.close (); Ergebnis = sb.toString (); } catch (Ausnahme e) {} versuche { json = neues JSONObject (Ergebnis); } catch (JSONException e) {} return json; }
Die Methode stellt eine Verbindung zu der angegebenen URL her und versucht, die Antwort in einem JSONObject-Objekt zu lesen und zu analysieren.
Der erste Teil der Methode öffnet die http-Verbindung und ruft die Antwort in einem InputStream ab. Der zweite Teil liest die Antwort und analysiert sie mit einem BufferedReader-Objekt, um sie schließlich an einen String zu übergeben.
Diese Zeichenfolge wird im dritten Teil benötigt, um ein neues JSONObject zu erstellen, das als letztes zurückgegeben wird.
Für den nächsten Teil erstellen wir eine neue Klasse, die ich JSONParserLibros nennen werde. Diese Klasse ist dafür verantwortlich, den Dienst zu lesen, der von der vorherigen Methode unterstützt wird, und in der Datenbank zu speichern.
Mal sehen, wie es funktioniert, zum Beispiel in einer Filmdatenbank.
private Aktivität Aktivität; private JSONObject jObject; privat ProgressDialog progressDialog = null; private Runnable runReadAndParseJSON; public JSONParserPeliculas (Aktivität a) { Aktivität = a; } public void readAndParseJSONPeliculas () wirft JSONException { runReadAndParseJSON = new Runnable () { @Override public void run () { versuche {[/ size] [/ font] readJSONPeliculas (); } catch (Ausnahme e) {} [/ size] [/ font] } }; Thread thread = neuer Thread (null, runReadAndParseJSON, "bgReadJSONPeliculas"); thread.start (); progressDialog = ProgressDialog.show (Aktivität "Informationen herunterladen", "Bitte warten", true); private void readJSONPeliculas () löst JSONException aus { jObject = JSONManager.getJSONfromURL ("http://208.87.120.105/android/service.peliculas.php"); if (jObject! = null) parseJSONPeliculas (jObject.getJSONArray ("movies")); activity.runOnUiThread (returnRes); } private void parseJSONPeliculas (JSONArray librosArray) löst JSONException aus { für (int i = 0; i <moviesArray.length (); i ++) { Film l = neue Filme (); l.setIdPelicula (peliculaArray.getJSONObject (i) .getInt ("id")); l.setTitle (movieArray.getJSONObject (i) .getString ("movie")); l.save (Aktivität); } } private Runnable returnRes = new Runnable () { @Override public void run () { progressDialog.dismiss (); } };
Im Folgenden finden Sie die öffentliche Methode, mit der wir unseren readAndParseJsonLibros-Dienst aufrufen. Diese Methode erstellt einen neuen Ausführungsthread, innerhalb dessen der Aufruf an den Webdienst erfolgt. Außerdem wird ein Dialogfenster gestartet, das den Benutzer über den Download informiert.
Wie wir sehen können, habe ich eine IP eines lokalen Netzwerks angegeben, um den Anruf an den Dienst zu tätigen. Dies entspricht dem Team, in dem ich den Webdienst entwickelt habe. Wenn Sie zum Zeitpunkt des Tests über einen WLAN-Router verfügen, müssen wir die WLAN-Verbindung auf unserem Android-Gerät aktivieren und eine Verbindung zu unserem lokalen Netzwerk herstellen, damit wir auf den Dienst zugreifen können. Falls wir kein WLAN haben, haben wir andere Optionen, wie das Einbinden des Webdienstes auf einen Server im Internet. Die Daten werden über unsere 3G-Verbindung heruntergeladen oder wir können es auch mit dem Android-Emulator versuchen.