Citirea serviciilor web de pe Android cu JSON

Cuprins

Ne vom conecta la un server, vom citi și analiza cu JSON, astfel încât să returneze informații și, în cele din urmă, le vom salva în baza de date de pe dispozitivul nostru.
Pentru cei care nu au un server unde să efectueze testele, putem folosi dispozitivul nostru și un router Wi-Fi pentru a efectua teste fără probleme.
Primul lucru pe care îl vom face este să deschidem orice program pentru a edita codul Eclipse, Betbeans sau cel care ne place cel mai mult. Într-un nou proiect vom crea o nouă clasă numită JSONManager care va avea următoarea metodă statică și publică.
 public static JSONObject getJSONfromURL (Strl url) {InputStream is = nul; String result = ""; JSONObject json = nul; încercați {HttpClient httpclient = new DefaultHttpClient (); HttpPost httppost = HttpPost nou (url); HttpResponse response = httpclient.execute (httppost); HttpEntity entity = response.getEntity (); este = entity.getContent (); } catch (Exception e) {} try {BufferedReader reader = new BufferedReader (new InputStreamReader (is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder (); Linia șirului = nul; while ((line = reader.readLine ())! = null) {sb.append (line + "\ n"); } este aproape (); result = sb.toString (); } catch (Exception e) {} try {json = new JSONObject (result); } catch (JSONException e) {} return json; } 

Metoda se va conecta la adresa URL pe care o indicăm și va încerca să citească și să analizeze răspunsul într-un JSONObject.
Prima parte a metodei deschide conexiunea http și obține răspunsul într-un InputStream. A doua parte citește răspunsul și îl analizează cu un obiect BufferedReader pentru a-l trece în cele din urmă către un șir.
Acest șir este necesar în a treia parte pentru a crea un nou JSONObject care va fi ceea ce vom întoarce în cele din urmă.
Pentru partea următoare creăm o nouă clasă, pe care o voi numi JSONParserLibros. Această clasă va fi însărcinată cu citirea serviciului ajutat al metodei anterioare și salvarea în baza de date.
Să vedem cum funcționează, de exemplu într-o bază de date de filme.
 activitate de activitate privată; private JSONObject jObject; private ProgressDialog progressDialog = nul; private Runnable runReadAndParseJSON; public JSONParserPeliculas (Activitatea a) {activitate = a; } public void readAndParseJSON Movies () aruncă JSONException {runReadAndParseJSON = new Runnable () {@Override public void run () {try {[/ size] [/ font] readJSON Movies (); } catch (Exception e) {} [/ size] [/ font]}}; Thread thread = thread nou (nul, runReadAndParseJSON, "bgReadJSONMovies"); thread.start (); progressDialog = ProgressDialog.show (activitate, „Descărcarea informațiilor”, „Vă rugăm să așteptați”, adevărat); private void readJSONPeliculas () aruncă JSONException {jObject = JSONManager.getJSONfromURL ("http://208.87.120.105/android/service.peliculas.php"); if (jObject! = null) parseJSONPeliculas (jObject.getJSONArray ("filme")); activity.runOnUiThread (returnRes); } private void parseJSONMovies (JSONArray booksArray) aruncă 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 (activitate); }} private Runnable returnRes = new Runnable () {@Override public void run () {progressDialog.dismiss (); }}; 

Apoi avem metoda publică pe care o vom folosi pentru a apela serviciul nostru readAndParseJsonLibros. Această metodă creează un nou fir de execuție în cadrul căruia va fi efectuat apelul către serviciul web, în ​​plus, se deschide o fereastră de dialog care va anunța utilizatorul că se efectuează o descărcare.
După cum putem vedea, am pus un IP al unei rețele locale pentru a efectua apelul către serviciu, acesta corespunde echipei în care am dezvoltat serviciul web. La momentul testării, dacă aveți un router Wi-Fi, trebuie să activăm conexiunea Wi-Fi pe dispozitivul nostru Android și să ne conectăm la rețeaua noastră locală, astfel încât să putem avea acces la serviciu. În cazul în care nu avem Wi-Fi, avem alte opțiuni, cum ar fi montarea serviciului web pe un server pe internet, datele vor fi descărcate folosind conexiunea noastră 3G sau îl putem testa și cu emulatorul Android.V-a plăcut și ați ajutat acest tutorial?Puteți recompensa autorul apăsând acest buton pentru a-i oferi un punct pozitiv
wave wave wave wave wave