Indholdsfortegnelse
Vi vil oprette forbindelse til en server, vi vil læse og analysere med JSON, så den returnerer oplysninger, og endelig gemmer vi den i databasen på vores enhed.For dem, der ikke har en server, hvor de kan udføre testene, kan vi bruge vores enhed og en Wi-Fi-router til at udføre tests uden problemer.
Den første ting, vi vil gøre, er at åbne ethvert program for at redigere koden Eclipse, Betbeans eller den, vi bedst kan lide. I et nyt projekt vil vi oprette en ny klasse kaldet JSONManager, som vil have 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 -svar = httpclient.execute (httppost); HttpEntity -enhed = response.getEntity (); er = entity.getContent (); } catch (Undtagelse e) {} prøv {BufferedReader reader = new BufferedReader (new InputStreamReader (is, "iso-8859-1"), 8); StringBuilder sb = ny StringBuilder (); Strenglinje = null; mens ((line = reader.readLine ())! = null) {sb.append (linje + "\ n"); } er.close (); resultat = sb.toString (); } catch (Undtagelse e) {} prøv {json = nyt JSONObject (resultat); } catch (JSONException e) {} return json; }
Metoden opretter forbindelse til den URL, vi angiver, og vil forsøge at læse og analysere svaret i et JSONObject.
Den første del af metoden åbner http -forbindelsen og får svaret i en InputStream. Den anden del læser svaret og analyserer det med et BufferedReader -objekt for endelig at sende det til en streng.
Denne streng er nødvendig i tredje del for at oprette et nyt JSONObject, som vi endelig vil returnere.
Til den næste del opretter vi en ny klasse, som jeg kommer til at kalde JSONParserLibros. Denne klasse kommer til at stå for at læse den hjælpede service til den tidligere metode og gemme i databasen.
Lad os se, hvordan det fungerer, for eksempel i en filmdatabase.
privat aktivitet; privat JSONObject jObject; private ProgressDialog progressDialog = null; private Runnable runReadAndParseJSON; offentlig JSONParserPeliculas (aktivitet a) {aktivitet = a; } public void readAndParseJSON Movies () kaster JSONException {runReadAndParseJSON = ny Runnable () {@Override public void run () {try {[/ size] [/ font] readJSON Movies (); } fangst (Undtagelse e) {} [/ size] [/ font]}}; Trådtråd = ny tråd (null, runReadAndParseJSON, "bgReadJSONMovies"); thread.start (); progressDialog = ProgressDialog.show (aktivitet, "Download af oplysninger", "Vent venligst", sandt); private void readJSONPeliculas () smider JSONException {jObject = JSONManager.getJSONfromURL ("http://208.87.120.105/android/service.peliculas.php"); hvis (jObject! = null) parseJSONPeliculas (jObject.getJSONArray ("film")); activity.runOnUiThread (returnRes); } private void parseJSONMovies (JSONArray booksArray) kaster JSONException {for (int i = 0; i <moviesArray.length (); i ++) {Film l = nye film (); l.setIdMovie (movieArray.getJSONObject (i) .getInt ("id")); l.setTitle (movieArray.getJSONObject (i) .getString ("film")); l. gemme (aktivitet); }} private Runnable returnRes = new Runnable () {@Override public void run () {progressDialog.dismiss (); }};
Dernæst har vi den offentlige metode, som vi vil bruge til at kalde vores readAndParseJsonLibros -service. Denne metode opretter en ny udførelsestråd, inden for hvilken opkaldet til webtjenesten vil blive foretaget, derudover startes et dialogvindue, der underretter brugeren om, at en download udføres.
Som vi kan se, har jeg sat en IP på et lokalt netværk for at foretage opkaldet til tjenesten, dette svarer til det team, hvor jeg har udviklet webtjenesten. På tidspunktet for test af dette, hvis du har en Wi-Fi-router, skal vi aktivere Wi-Fi-forbindelsen på vores Android-enhed og oprette forbindelse til vores lokale netværk, så vi kan få adgang til tjenesten. Hvis vi ikke har wifi, har vi andre muligheder som f.eks. Montering af webtjenesten på en server på internettet, dataene vil blive downloadet ved hjælp af vores 3G -forbindelse, eller vi kan også teste det med Android -emulatoren.Kan du lide og hjælpe denne vejledning?Du kan belønne forfatteren ved at trykke på denne knap for at give ham et positivt punkt