Cuprins
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