Läser webbtjänster från Android med JSON

Innehållsförteckning

Vi ska ansluta till en server, vi kommer att läsa och analysera med JSON så att den returnerar information och slutligen kommer vi att spara den i databasen på vår enhet.
För dem som inte har en server där testerna kan utföras, kan vi använda vår enhet och en Wi-Fi-router för att utföra tester utan problem.
Det första vi kommer att göra är att öppna alla program för att redigera koden Eclipse, Betbeans eller den vi gillar mest. I ett nytt projekt kommer vi att skapa en ny klass som heter JSONManager som kommer att ha följande statisk och offentlig metod.
 public static JSONObject getJSONfromURL (String url) {InputStream is = null; Strängresultat = ""; JSONObject json = null; prova {HttpClient httpclient = new DefaultHttpClient (); HttpPost httppost = new HttpPost (url); HttpResponse -svar = httpclient.execute (httppost); HttpEntity -enhet = response.getEntity (); är = entity.getContent (); } catch (Undantag e) {} försök {BufferedReader reader = new BufferedReader (new InputStreamReader (is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder (); Stränglinje = null; medan ((line = reader.readLine ())! = null) {sb.append (rad + "\ n"); } är nära (); resultat = sb.toString (); } catch (Undantag e) {} prova {json = nytt JSONObject (resultat); } catch (JSONException e) {} return json; } 

Metoden ansluter till den URL som vi anger och försöker läsa och analysera svaret i ett JSONObject.
Den första delen av metoden öppnar http -anslutningen och får svaret i en InputStream. Den andra delen läser svaret och analyserar det med ett BufferedReader -objekt för att slutligen skicka det till en sträng.
Denna sträng är nödvändig i den tredje delen för att skapa ett nytt JSONObject som kommer att vara vad vi äntligen kommer att återvända.
För nästa del skapar vi en ny klass, som jag kommer att kalla JSONParserLibros. Den här klassen kommer att ansvara för att läsa hjälptjänsten för den tidigare metoden och spara i databasen.
Låt oss se hur det fungerar, till exempel i en filmdatabas.
 privat Aktivitetsaktivitet; privat JSONObject jObject; privat ProgressDialog progressDialog = null; privat körbar runReadAndParseJSON; offentlig JSONParserPeliculas (aktivitet a) {aktivitet = a; } public void readAndParseJSON Movies () kastar JSONException {runReadAndParseJSON = new Runnable () {@Override public void run () {try {[/ size] [/ font] readJSON Movies (); } catch (Undantag e) {} [/ size] [/ font]}}; Trådtråd = ny tråd (null, runReadAndParseJSON, "bgReadJSONMovies"); thread.start (); progressDialog = ProgressDialog.show (aktivitet, "Ladda ner information", "Vänta", sant); private void readJSONPeliculas () kastar 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) kastar JSONException {för (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. spara (aktivitet); }} private Runnable returnRes = new Runnable () {@Override public void run () {progressDialog.dismiss (); }}; 

Därefter har vi den offentliga metoden som vi kommer att använda för att kalla vår readAndParseJsonLibros -tjänst. Denna metod skapar en ny körningstråd inom vilken samtalet till webbtjänsten kommer att göras, dessutom startas ett dialogfönster som meddelar användaren att en nedladdning utförs.
Som vi kan se har jag lagt en IP för ett lokalt nätverk för att ringa till tjänsten, detta motsvarar teamet där jag har utvecklat webbtjänsten. När vi testar detta, om du har en Wi-Fi-router, måste vi aktivera Wi-Fi-anslutningen på vår Android-enhet och ansluta till vårt lokala nätverk så att vi kan få åtkomst till tjänsten. Om vi ​​inte har wifi har vi andra alternativ som att montera webbtjänsten på en server på internet, data laddas ner med vår 3G -anslutning, eller så kan vi också testa det med Android -emulatorn.Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng
wave wave wave wave wave