Lese webtjenester fra Android med JSON

Innholdsfortegnelse

Vi skal koble til en server, vi vil lese og analysere med JSON slik at den returnerer informasjon, og til slutt lagrer vi den i databasen på enheten vår.
For de som ikke har en server hvor vi kan utføre testene, kan vi bruke enheten vår og en Wi-Fi-ruter til å utføre tester uten problemer.
Det første vi skal gjøre er å åpne et hvilket som helst program for å redigere koden Eclipse, Betbeans eller den vi liker best. I et nytt prosjekt vil vi lage en ny klasse kalt JSONManager som vil ha følgende statisk og offentlig metode.
 offentlig statisk JSONObject getJSONfromURL (String -url) {InputStream er = null; String resultat = ""; JSONObject json = null; prøv {HttpClient httpclient = new DefaultHttpClient (); HttpPost httppost = ny HttpPost (url); HttpResponse -respons = httpclient.execute (httppost); HttpEntity -enhet = response.getEntity (); is = entity.getContent (); } catch (Unntak e) {} prøv {BufferedReader reader = new BufferedReader (new InputStreamReader (is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder (); String line = null; while ((line = reader.readLine ())! = null) {sb.append (line + "\ n"); } er nært (); resultat = sb.toString (); } catch (Unntak e) {} prøv {json = nytt JSONObject (resultat); } catch (JSONException e) {} return json; } 

Metoden kobles til URL -en som vi angir, og vil prøve å lese og analysere responsen i et JSONObject.
Den første delen av metoden åpner http -tilkoblingen og får svaret i en InputStream. Den andre delen leser svaret og analyserer det med et BufferedReader -objekt for å endelig sende det til en streng.
Denne strengen er nødvendig i den tredje delen for å lage et nytt JSONObject som vil være det vi endelig vil returnere.
For neste del oppretter vi en ny klasse, som jeg kommer til å kalle JSONParserLibros. Denne klassen kommer til å ha ansvaret for å lese hjelpetjenesten til den forrige metoden og lagre i databasen.
La oss se hvordan det fungerer, for eksempel i en filmdatabase.
 privat Aktivitetsaktivitet; privat JSONObject jObject; private ProgressDialog progressDialog = null; private Runnable runReadAndParseJSON; offentlig JSONParserPeliculas (aktivitet a) {aktivitet = a; } public void readAndParseJSON Movies () kaster JSONException {runReadAndParseJSON = new Runnable () {@Override public void run () {try {[/ size] [/ font] readJSON Movies (); } fangst (Unntak e) {} [/ size] [/ font]}}; Trådtråd = ny tråd (null, runReadAndParseJSON, "bgReadJSONMovies"); thread.start (); progressDialog = ProgressDialog.show (aktivitet, "Nedlasting av informasjon", "Vennligst vent", sant); private void readJSONPeliculas () kaster JSONException {jObject = JSONManager.getJSONfromURL ("http://208.87.120.105/android/service.peliculas.php"); if (jObject! = null) parseJSONPeliculas (jObject.getJSONArray ("filmer")); activity.runOnUiThread (returnRes); } private void parseJSONMovies (JSONArray booksArray) kaster 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. lagre (aktivitet); }} private Runnable returnRes = new Runnable () {@Override public void run () {progressDialog.dismiss (); }}; 

Deretter har vi den offentlige metoden som vi vil bruke for å kalle vår readAndParseJsonLibros -tjeneste. Denne metoden oppretter en ny kjøringstråd der samtalen til webtjenesten vil bli foretatt, i tillegg startes et dialogvindu som vil varsle brukeren om at en nedlasting utføres.
Som vi kan se, har jeg lagt en IP for et lokalt nettverk for å ringe til tjenesten, dette tilsvarer teamet der jeg har utviklet webtjenesten. På tidspunktet for å teste dette, hvis du har en Wi-Fi-ruter, må vi aktivere Wi-Fi-tilkoblingen på Android-enheten vår og koble til vårt lokale nettverk slik at vi kan få tilgang til tjenesten. Hvis vi ikke har wifi, har vi andre alternativer som å montere webtjenesten på en server på internett, dataene vil bli lastet ned med vår 3G -tilkobling, eller vi kan også teste det med Android -emulatoren.Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng
wave wave wave wave wave