Table des matières
Nous allons nous connecter à un serveur, nous allons lire et analyser avec JSON pour qu'il renvoie des informations et enfin nous les enregistrerons dans la base de données de notre appareil.Pour ceux qui n'ont pas de serveur où effectuer les tests, nous pouvons utiliser notre appareil et un routeur Wi-Fi pour effectuer des tests sans problème.
La première chose que nous allons faire est d'ouvrir n'importe quel programme pour éditer le code Eclipse, Betbeans ou celui que nous aimons le plus. Dans un nouveau projet, nous allons créer une nouvelle classe appelée JSONManager qui aura la méthode statique et publique suivante.
public statique JSONObject getJSONfromURL (URL de chaîne) {InputStream is = null; Résultat de la chaîne = ""; JSONObject json = null ; essayez {HttpClient httpclient = new DefaultHttpClient (); HttpPost httppost = nouveau HttpPost (url); Réponse HttpResponse = httpclient.execute (httppost); Entité HttpEntity = réponse.getEntity (); est = entity.getContent (); } catch (Exception e) {} try {BufferedReader reader = new BufferedReader (nouveau InputStreamReader (est, "iso-8859-1"), 8); StringBuilder sb = nouveau StringBuilder (); Ligne de chaîne = null; while ((ligne = reader.readLine ())! = null) {sb.append (ligne + "\ n"); } est près (); résultat = sb.toString (); } catch (Exception e) {} try {json = new JSONObject (résultat); } catch (JSONException e) {} return json; }
La méthode se connectera à l'URL que nous indiquons et essaiera de lire et d'analyser la réponse dans un JSONObject.
La première partie de la méthode ouvre la connexion http et obtient la réponse dans un InputStream. La deuxième partie lit la réponse et l'analyse avec un objet BufferedReader pour finalement la transmettre à une chaîne.
Cette chaîne est nécessaire dans la troisième partie pour créer un nouveau JSONObject qui sera ce que nous retournerons finalement.
Pour la partie suivante, nous créons une nouvelle classe, que je vais appeler JSONParserLibros. Cette classe va se charger de lire le service aidé de la méthode précédente et de l'enregistrer dans la base de données.
Voyons comment cela fonctionne, par exemple dans une base de données de films.
Activité privée Activité; JSONObject privé jObject; private ProgressDialog progressDialog = null; Runnable privé runReadAndParseJSON; public JSONParserPeliculas (Activité a) {activité = a; } public void readAndParseJSON Movies () lève JSONException {runReadAndParseJSON = new Runnable () {@Override public void run () {essayez {[/ size] [/ font] readJSON Movies (); } catch (Exception e) {} [/ size] [/ font]}}; Thread thread = new Thread (null, runReadAndParseJSON, "bgReadJSONMovies"); thread.start (); progressDialog = ProgressDialog.show (activité, "Téléchargement des informations", "Veuillez patienter", true); private void readJSONPeliculas () lève JSONException {jObject = JSONManager.getJSONfromURL ("http://208.87.120.105/android/service.peliculas.php"); if (jObject! = null) parseJSONPeliculas (jObject.getJSONArray ("films")); activité.runOnUiThread (returnRes); } private void parseJSONMovies (JSONArray booksArray) lève 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.save (activité); }} private Runnable returnRes = new Runnable () {@Override public void run () {progressDialog.dismiss (); }};
Ensuite, nous avons la méthode publique que nous utiliserons pour appeler notre service readAndParseJsonLibros. Cette méthode crée un nouveau fil d'exécution dans lequel l'appel au service Web sera effectué, en outre, une fenêtre de dialogue est lancée qui informera l'utilisateur qu'un téléchargement est en cours.
Comme on peut le voir, j'ai mis une IP d'un réseau local pour faire l'appel au service, cela correspond à l'équipe où j'ai développé le service web. Au moment de tester cela, si vous avez un routeur Wi-Fi, nous devons activer la connexion Wi-Fi sur notre appareil Android et nous connecter à notre réseau local afin que nous puissions avoir accès au service. En cas de ne pas avoir de wifi, nous avons d'autres options comme monter le service web sur un serveur sur internet, les données seront téléchargées en utilisant notre connexion 3G, ou nous pouvons aussi le tester avec l'émulateur Android.Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif