Czytanie usług internetowych z Androida za pomocą JSON

Spisie treści

Zamierzamy połączyć się z serwerem, odczytamy i parsujemy z JSON, aby zwracał informacje i na koniec zapiszemy je w bazie danych na naszym urządzeniu.
Dla tych, którzy nie mają serwera, na którym przeprowadzić testy, możemy bez problemu skorzystać z naszego urządzenia i routera Wi-Fi.
Pierwszą rzeczą, którą zrobimy, to otworzyć dowolny program do edycji kodu Eclipse, Betbeans lub ten, który najbardziej nam się podoba. W nowym projekcie utworzymy nową klasę o nazwie JSONManager, która będzie miała następującą metodę statyczną i publiczną.
 public statyczny JSONObject getJSONfromURL (String url) {InputStream is = null; Wynik ciągu = ""; JSONObject json = null; spróbuj {HttpClient httpclient = new DefaultHttpClient (); HttpPost httppost = nowy HttpPost (adres URL); Odpowiedź HttpResponse = httpclient.execute (httppost); Jednostka HttpEntity = response.getEntity (); jest = encja.getContent (); } catch (Wyjątek e) {} try {BufferedReader reader = new BufferedReader (new InputStreamReader (is, "iso-8859-1"), 8); StringBuilder sb = nowy StringBuilder (); Linia ciągu = null; while ((line = reader.readLine())! = null) {sb.append (line + "\ n"); } jest blisko (); wynik = sb.toString (); } catch (Wyjątek e) {} try {json = new JSONObject (wynik); } catch (JSONException e) {} return json; } 

Metoda połączy się ze wskazanym adresem URL i spróbuje odczytać i przeanalizować odpowiedź w JSONObject.
Pierwsza część metody otwiera połączenie http i otrzymuje odpowiedź w InputStream. Druga część odczytuje odpowiedź i analizuje ją za pomocą obiektu BufferedReader, aby ostatecznie przekazać ją do String.
Ten ciąg jest niezbędny w trzeciej części do stworzenia nowego JSONObject, który będzie tym, co w końcu zwrócimy.
W następnej części tworzymy nową klasę, którą będę nazywać JSONParserLibros. Ta klasa będzie odpowiedzialna za odczytanie usługi pomocy poprzedniej metody i zapisanie w bazie danych.
Zobaczmy, jak to działa, na przykład w bazie filmów.
 działalność prywatna; prywatny JSONObject jObject; prywatny ProgressDialog progressDialog = null; private Runnable runReadAndParseJSON; public JSONParserPeliculas (Aktywność a) {aktywność = a; } public void readAndParseJSON Movies () wyrzuca JSONException {runReadAndParseJSON = new Runnable () {@Override public void run () {spróbuj {[/ size] [/ font] readJSON Movies (); } catch (Wyjątek e) {} [/rozmiar] [/czcionka]}}; Wątek wątku = nowy wątek (null, runReadAndParseJSON, "bgReadJSONMovies"); wątek.początek (); progressDialog = ProgressDialog.show (aktywność, „Pobieranie informacji”, „Proszę czekać”, prawda); private void readJSONPeliculas () wyrzuca JSONException {jObject = JSONManager.getJSONfromURL ("http://208.87.120.105/android/service.peliculas.php"); if (jObject! = null) parseJSONPeliculas (jObject.getJSONArray ("filmy")); aktywność.runOnUiThread (returnRes); } private void parseJSONMovies (JSONArray booksArray) wyrzuca JSONException {for (int i = 0; i <moviesArray.length (); i ++) {Film l = new Movies (); l.setIdMovie (movieArray.getJSONObject (i) .getInt ("id")); l.setTitle (movieArray.getJSONObject (i) .getString („film”)); l.zapisz (aktywność); }} private Runnable returnRes = new Runnable () {@Override public void run () {progressDialog.dismiss (); }}; 

Następnie mamy metodę publiczną, której użyjemy do wywołania naszej usługi readAndParseJsonLibros. Ta metoda tworzy nowy wątek wykonania, w ramach którego zostanie wykonane wywołanie usługi sieciowej, dodatkowo uruchamiane jest okno dialogowe, które powiadomi użytkownika o wykonywaniu pobierania.
Jak widać, umieściłem adres IP sieci lokalnej, aby nawiązać połączenie z usługą, odpowiada to zespołowi, w którym opracowałem usługę sieciową. W czasie testowania, jeśli masz router Wi-Fi, musimy aktywować połączenie Wi-Fi na naszym urządzeniu z Androidem i połączyć się z naszą siecią lokalną, abyśmy mogli mieć dostęp do usługi. W przypadku braku Wi-Fi mamy do wyboru inne opcje, takie jak zamontowanie usługi sieciowej na serwerze w internecie, dane będą pobierane za pomocą naszego połączenia 3G, lub też możemy to przetestować na emulatorze Androida.Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt
wave wave wave wave wave