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