Inhoudsopgave
We gaan verbinding maken met een server, we lezen en parseren met JSON zodat het informatie retourneert en uiteindelijk slaan we het op in de database op ons apparaat.Voor degenen die geen server hebben waar de tests kunnen worden uitgevoerd, kunnen we ons apparaat en een wifi-router gebruiken om tests zonder probleem uit te voeren.
Het eerste dat we zullen doen, is een programma openen om de code Eclipse, Betbeans of degene die we het leukst vinden te bewerken. In een nieuw project zullen we een nieuwe klasse maken met de naam JSONManager die de volgende statische en openbare methode zal hebben.
openbare statische JSONObject getJSONfromURL (String url) {InputStream is = null; Tekenreeksresultaat = ""; JSONObject json = null; probeer {HttpClient httpclient = nieuwe DefaultHttpClient (); HttpPost httppost = nieuwe HttpPost (url); HttpResponse-antwoord = httpclient.execute (httppost); HttpEntity entiteit = response.getEntity (); is = entiteit.getContent (); } catch (uitzondering e) {} probeer {BufferedReader-lezer = nieuwe BufferedReader (nieuwe InputStreamReader (is, "iso-8859-1"), 8); StringBuilder sb = nieuwe StringBuilder (); Stringregel = null; while ((regel = reader.readLine ())! = null) {sb.append (regel + "\ n"); } is dichtbij (); resultaat = sb.toString (); } catch (Uitzondering e) {} probeer {json = nieuwe JSONObject (resultaat); } catch (JSONException e) {} return json; }
De methode maakt verbinding met de URL die we aangeven en zal proberen het antwoord in een JSONObject te lezen en te ontleden.
Het eerste deel van de methode opent de http-verbinding en krijgt het antwoord in een InputStream. Het tweede deel leest het antwoord en parseert het met een BufferedReader-object om het uiteindelijk door te geven aan een String.
Deze string is nodig in het derde deel om een nieuw JSONObject te maken dat we uiteindelijk zullen retourneren.
Voor het volgende deel maken we een nieuwe klasse, die ik JSONParserLibros ga noemen. Deze klasse zal verantwoordelijk zijn voor het lezen van de ondersteunde service van de vorige methode en het opslaan in de database.
Laten we eens kijken hoe het werkt, bijvoorbeeld in een filmdatabase.
privé Activiteit activiteit; privé JSONObject jObject; privé ProgressDialog progressDialog = null; private Runnable runReadAndParseJSON; openbare JSONParserPeliculas (Activiteit a) {activiteit = een; } public void readAndParseJSON Movies () gooit JSONException {runReadAndParseJSON = new Runnable () {@Override public void run () {try {[/ size] [/ font] readJSON Movies (); } catch (uitzondering e) {} [/ size] [/ font]}}; Thread thread = nieuwe thread (null, runReadAndParseJSON, "bgReadJSONMovies"); draad.start (); progressDialog = ProgressDialog.show (activiteit, "Informatie downloaden", "Even geduld", waar); private void readJSONPeliculas () gooit JSONException {jObject = JSONManager.getJSONfromURL ("http://208.87.120.105/android/service.peliculas.php"); if (jObject! = null) ontledenJSONPeliculas (jObject.getJSONArray ("films")); activity.runOnUiThread (returnRes); } private void parseJSONMovies (JSONArray booksArray) gooit JSONException {for (int i = 0; i <moviesArray.length (); i ++) {Film l = nieuwe films (); l.setIdMovie (movieArray.getJSONObject (i) .getInt ("id")); l.setTitle (movieArray.getJSONObject (i) .getString ("film")); l.opslaan (activiteit); }} private Runnable returnRes = new Runnable () {@Override public void run () {progressDialog.dismiss (); }};
Vervolgens hebben we de openbare methode die we zullen gebruiken om onze readAndParseJsonLibros-service aan te roepen. Deze methode creëert een nieuwe uitvoeringsthread waarbinnen de oproep naar de webservice zal worden gedaan, daarnaast wordt een dialoogvenster gestart dat de gebruiker op de hoogte stelt dat er een download wordt uitgevoerd.
Zoals we kunnen zien, heb ik een IP van een lokaal netwerk geplaatst om de service te bellen, dit komt overeen met het team waar ik de webservice heb ontwikkeld. Als je een wifi-router hebt, moeten we op het moment van testen de wifi-verbinding op ons Android-apparaat activeren en verbinding maken met ons lokale netwerk zodat we toegang hebben tot de service. In het geval dat we geen wifi hebben, hebben we andere opties, zoals het monteren van de webservice op een server op internet, de gegevens worden gedownload via onze 3G-verbinding, of we kunnen het ook testen met de Android-emulator.Vond je deze Tutorial leuk en heb je eraan geholpen?Je kunt de auteur belonen door op deze knop te drukken om hem een positief punt te geven