Lettura di servizi web da Android con JSON

Sommario

Ci collegheremo a un server, leggeremo e analizzeremo con JSON in modo che restituisca informazioni e infine le salveremo nel database sul nostro dispositivo.
Per chi non dispone di un server dove effettuare i test, possiamo utilizzare il nostro dispositivo e un router Wi-Fi per effettuare i test senza problemi.
La prima cosa che faremo è aprire qualsiasi programma per modificare il codice Eclipse, Betbeans o quello che ci piace di più. In un nuovo progetto creeremo una nuova classe chiamata JSONManager che avrà il seguente metodo statico e pubblico.
 public static JSONObject getJSONfromURL (String url) {InputStream is = null; Risultato stringa = ""; JSONObject json = null; prova {HttpClient httpclient = new DefaultHttpClient (); HttpPost httppost = nuovo HttpPost (url); HttpResponse risposta = httpclient.execute (httppost); Entità HttpEntity = response.getEntity (); is = entità.getContent (); } catch (Eccezione e) {} try {BufferedReader reader = new BufferedReader (new InputStreamReader (è, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder (); Stringa riga = null; while ((line = reader.readLine ())! = null) {sb.append (line + "\ n"); } è chiuso (); risultato = sb.toString (); } catch (eccezione e) {} try {json = new JSONObject (risultato); } catch (JSONException e) {} return json; } 

Il metodo si collegherà all'URL che indichiamo e proverà a leggere e analizzare la risposta in un JSONObject.
La prima parte del metodo apre la connessione http e ottiene la risposta in un InputStream. La seconda parte legge la risposta e la analizza con un oggetto BufferedReader per passarla infine a una stringa.
Questa String è necessaria nella terza parte per creare un nuovo JSONObject che sarà quello che finalmente restituiremo.
Per la parte successiva creiamo una nuova classe, che chiamerò JSONParserLibros. Questa classe si occuperà della lettura del servizio di aiuto del metodo precedente e del salvataggio nel database.
Vediamo come funziona, ad esempio in un database di film.
 attività di attività privata; JSONObject privato jObject; private ProgressDialog progressDialog = null; runnable privato runReadAndParseJSON; public JSONParserPeliculas (Attività a) {attività = a; } public void readAndParseJSON Movies () genera JSONException {runReadAndParseJSON = new Runnable () {@Override public void run () {try {[/ size] [/ font] readJSON Movies (); } catch (Eccezione e) {} [/ size] [/ font]}}; Thread thread = nuovo Thread (null, runReadAndParseJSON, "bgReadJSONMovies"); thread.start (); progressDialog = ProgressDialog.show (attività, "Scaricamento informazioni", "Attendere", true); private void readJSONPeliculas () genera JSONException {jObject = JSONManager.getJSONfromURL ("http://208.87.120.105/android/service.peliculas.php"); if (jObject! = null) parseJSONPeliculas (jObject.getJSONArray ("film")); attività.runOnUiThread (returnRes); } private void parseJSONMovies (JSONArray booksArray) genera 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.salva (attività); }} private Runnable returnRes = new Runnable () {@Override public void run () {progressDialog.dismiss (); }}; 

Successivamente abbiamo il metodo pubblico che utilizzeremo per chiamare il nostro servizio readAndParseJsonLibros. Questo metodo crea un nuovo thread di esecuzione all'interno del quale verrà effettuata la chiamata al servizio web, inoltre viene avviata una finestra di dialogo che avviserà l'utente che è in corso un download.
Come possiamo vedere, ho messo un IP di una rete locale per effettuare la chiamata al servizio, questo corrisponde al team in cui ho sviluppato il servizio web. Al momento del test, se disponi di un router Wi-Fi, dobbiamo attivare la connessione Wi-Fi sul nostro dispositivo Android e collegarci alla nostra rete locale in modo da poter accedere al servizio. Nel caso non disponiamo di wifi, abbiamo altre opzioni come montare il servizio web su un server su internet, i dati verranno scaricati utilizzando la nostra connessione 3G, oppure possiamo anche testarlo con l'emulatore Android.Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave