Žiniatinklio paslaugų skaitymas iš „Android“ naudojant JSON

Turinys

Mes ketiname prisijungti prie serverio, perskaitysime ir išanalizuosime JSON, kad jis grąžintų informaciją ir galiausiai išsaugotume ją savo įrenginio duomenų bazėje.
Tiems, kurie neturi serverio, kur atlikti testus, galime naudoti savo įrenginį ir „Wi-Fi“ maršrutizatorių, kad galėtume atlikti bandymus be problemų.
Pirmas dalykas, kurį mes padarysime, yra atidaryti bet kurią programą, skirtą redaguoti kodą „Eclipse“, „Betbeans“ arba tą, kuri mums labiausiai patinka. Naujame projekte sukursime naują klasę, pavadintą JSONManager, kuri turės tokį statinį ir viešą metodą.
 public static JSONObject getJSONfromURL (eilutės URL) {InputStream is = null; Eilutės rezultatas = ""; JSONObject json = null; pabandykite {HttpClient httpclient = new DefaultHttpClient (); HttpPost httppost = naujas HttpPost (url); HttpResponse atsakymas = httpclient.execute (httppost); HttpEntity objektas = response.getEntity (); is = entity.getContent (); } catch (išimtis e) {} pabandykite {BufferedReader reader = new BufferedReader (new InputStreamReader (is, "iso-8859-1"), 8); StringBuilder sb = naujas StringBuilder (); Eilutės eilutė = null; while ((line = reader.readLine ())! = null) {sb.append (eilutė + "\ n"); } yra arti (); rezultatas = sb.toString (); } pagauti (e išimtis) {} pabandyti {json = naujas JSONObject (rezultatas); } pagauti (JSONException e) {} grąžinti json; } 

Metodas prisijungs prie mūsų nurodyto URL ir bandys skaityti bei išanalizuoti atsakymą JSONObject.
Pirmoji metodo dalis atveria http ryšį ir gauna atsakymą „InputStream“. Antroji dalis skaito atsakymą ir analizuoja jį su „BufferedReader“ objektu, kad galiausiai perduotų jį eilutei.
Ši eilutė yra būtina trečiojoje dalyje, norint sukurti naują JSONObject, kuris bus tas, kurį mes pagaliau grįšime.
Kitoje dalyje sukuriame naują klasę, kurią aš pavadinsiu „JSONParserLibros“. Ši klasė bus atsakinga už ankstesnio metodo pagalbos paslaugos skaitymą ir išsaugojimą duomenų bazėje.
Pažiūrėkime, kaip tai veikia, pavyzdžiui, filmų duomenų bazėje.
 privati ​​veikla; privatus JSONObject jObject; privatus ProgressDialog progressDialog = null; privatus „Runnable runReadAndParseJSON“; public JSONParserPeliculas (a veikla) ​​{veikla = a; } public void readAndParseJSON Movies () meta JSONException {runReadAndParseJSON = new Runnable () {@Orride public void run () {try {[/ size] [/ font] readJSON Movies (); } laimikis (e išimtis) {} [/ dydis] [/ šriftas]}}; Temos gija = nauja gija (null, runReadAndParseJSON, "bgReadJSONMovies"); thread.start (); progressDialog = ProgressDialog.show (veikla, "Atsisiunčiama informacija", "Prašome palaukti", tiesa); private void readJSONPeliculas () meta JSONException {jObject = JSONManager.getJSONfromURL ("http://208.87.120.105/android/service.peliculas.php"); if (jObject! = null) parseJSONPeliculas (jObject.getJSONArray ("filmai")); activity.runOnUiThread (returnRes); } private void parseJSONMovies (JSONArray booksArray) meta 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 ("filmas")); l.save (veikla); }} private Runnable returnRes = new Runnable () {@Orride public void run () {progressDialog.dismiss (); }}; 

Toliau turime viešąjį metodą, kurį naudosime vadindami savo paslaugą readAndParseJsonLibros. Šis metodas sukuria naują vykdymo giją, per kurią bus skambinama žiniatinklio paslaugai, be to, atidaromas dialogo langas, kuriame vartotojui bus pranešta apie atsisiuntimą.
Kaip matome, aš paskyriau vietinio tinklo IP, kad galėčiau paskambinti tarnybai, tai atitinka komandą, kurioje sukūriau žiniatinklio paslaugą. Bandydami tai, jei turite „Wi-Fi“ maršrutizatorių, turime suaktyvinti „Wi-Fi“ ryšį „Android“ įrenginyje ir prisijungti prie vietinio tinklo, kad galėtume pasiekti paslaugą. Jei neturime „Wi -Fi“, turime ir kitų galimybių, pavyzdžiui, įdiegti žiniatinklio paslaugą į interneto serverį, duomenys bus atsisiųsti naudojant mūsų 3G ryšį arba taip pat galime išbandyti naudodami „Android“ emuliatorių.Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką
wave wave wave wave wave