Lesen von Webdiensten von Android mit JSON

Inhaltsverzeichnis

Wir werden eine Verbindung zu einem Server herstellen, mit JSON lesen und parsen, damit es Informationen zurückgibt und schließlich in der Datenbank auf unserem Gerät speichern.
Für diejenigen, die keinen Server haben, um die Tests durchzuführen, können wir unser Gerät und einen WLAN-Router problemlos verwenden, um Tests durchzuführen.
Das erste, was wir tun werden, ist ein beliebiges Programm zu öffnen, um den Code Eclipse, Betbeans oder den Code zu bearbeiten, der uns am besten gefällt. In einem neuen Projekt erstellen wir eine neue Klasse namens JSONManager, die die folgende statische und öffentliche Methode hat.
 öffentliches statisches JSONObject getJSONfromURL (String-URL) {InputStream is = null; String-Ergebnis = ""; JSONObject json = null; try {HttpClient httpclient = new DefaultHttpClient (); HttpPost httppost = new HttpPost (URL); HttpResponse-Antwort = httpclient.execute (httppost); HttpEntity-Entity = response.getEntity (); ist = Entity.getContent (); } catch (Exception e) {} try {BufferedReader reader = new BufferedReader (new InputStreamReader (ist, "iso-8859-1"), 8); StringBuilder sb = neuer StringBuilder (); String-Zeile = null; while ((line = reader.readLine ())! = null) {sb.append (line + "\ n"); } ist in der Nähe (); result = sb.toString(); } catch (Exception e) {} try {json = new JSONObject (Ergebnis); } catch (JSONException e) {} return json; } 

Die Methode stellt eine Verbindung zu der von uns angegebenen URL her und versucht, die Antwort in einem JSONObject zu lesen und zu parsen.
Der erste Teil der Methode öffnet die http-Verbindung und ruft die Antwort in einem InputStream ab. Der zweite Teil liest die Antwort und parst sie mit einem BufferedReader-Objekt, um sie schließlich an einen String zu übergeben.
Dieser String wird im dritten Teil benötigt, um ein neues JSONObject zu erstellen, das wir schließlich zurückgeben werden.
Für den nächsten Teil erstellen wir eine neue Klasse, die ich JSONParserLibros nennen werde. Diese Klasse wird dafür verantwortlich sein, den unterstützten Dienst der vorherigen Methode zu lesen und in der Datenbank zu speichern.
Sehen wir uns an, wie es funktioniert, zum Beispiel in einer Filmdatenbank.
 private Aktivitätsaktivität; privates JSONObject jObject; privater ProgressDialog progressDialog = null; private Ausführbare runReadAndParseJSON; public JSONParserPeliculas (Aktivität a) {Aktivität = a; } public void readAndParseJSON Movies () wirft JSONException {runReadAndParseJSON = new Runnable () {@Override public void run () {try {[/size] [/font] readJSON Movies (); } catch (Ausnahme e) {} [/Größe] [/Schriftart]}}; Thread-Thread = neuer Thread (null, runReadAndParseJSON, "bgReadJSONMovies"); thread.start(); progressDialog = ProgressDialog.show (Aktivität, "Informationen werden heruntergeladen", "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 ("Filme")); Aktivität.runOnUiThread (returnRes); } private void parseJSONMovies (JSONArray booksArray) wirft JSONException {for (int i = 0; i <moviesArray.length (); i ++) {Movie l = new Movies (); l.setIdMovie (movieArray.getJSONObject (i) .getInt ("id")); l.setTitle (movieArray.getJSONObject (i) .getString ("Film")); l.save (Aktivität); }} private Runnable returnRes = new Runnable () {@Override public void run () {progressDialog.dismiss (); }}; 

Als nächstes haben wir die öffentliche Methode, mit der wir unseren readAndParseJsonLibros-Dienst aufrufen. Diese Methode erstellt einen neuen Ausführungsthread, innerhalb dessen der Aufruf des Webservice erfolgt, zusätzlich wird ein Dialogfenster gestartet, das den Benutzer darüber informiert, dass ein Download durchgeführt wird.
Wie wir sehen, 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 Wi-Fi-Router verfügen, müssen wir die Wi-Fi-Verbindung auf unserem Android-Gerät aktivieren und eine Verbindung zu unserem lokalen Netzwerk herstellen, damit wir auf den Dienst zugreifen können. Falls kein WLAN vorhanden ist, haben wir andere Möglichkeiten, wie z. B. den Webservice auf einem Server im Internet zu installieren, die Daten über unsere 3G-Verbindung herunterzuladen oder auch mit dem Android-Emulator zu testen.Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben
wave wave wave wave wave