Čtení webových služeb z Androidu pomocí JSON

Obsah

Chystáme se připojit k serveru, přečteme a analyzujeme JSON, aby vrátil informace, a nakonec je uložíme do databáze v našem zařízení.
Pro ty, kteří nemají server, kde by mohli provádět testy, můžeme použít naše zařízení a router Wi-Fi k bezproblémovému provedení testů.
První věc, kterou uděláme, je otevření libovolného programu pro úpravu kódu Eclipse, Betbeans nebo toho, který se nám nejvíce líbí. V novém projektu vytvoříme novou třídu s názvem JSONManager, která bude mít následující statickou a veřejnou metodu.
 public static JSONObject getJSONfromURL (URL řetězce) {InputStream is = null; Výsledek řetězce = ""; JSONObject json = null; zkusit {HttpClient httpclient = new DefaultHttpClient (); HttpPost httppost = nový HttpPost (URL); HttpResponse response = httpclient.execute (httppost); HttpEntity entita = response.getEntity (); je = entity.getContent (); } catch (Exception e) {} try {BufferedReader reader = new BufferedReader (new InputStreamReader (is, "iso-8859-1"), 8); StringBuilder sb = nový StringBuilder (); Řetězcový řádek = null; while ((line = reader.readLine ())! = null) {sb.append (řádek + "\ n"); } je blízko (); result = sb.toString (); } catch (Exception e) {} try {json = new JSONObject (result); } catch (JSONException e) {} return json; } 

Metoda se připojí k adrese URL, kterou uvedeme, a pokusí se přečíst a analyzovat odpověď v JSONObject.
První část metody otevře připojení http a získá odpověď v InputStream. Druhá část čte odpověď a analyzuje ji pomocí objektu BufferedReader, aby ji nakonec předala do řetězce.
Tento řetězec je ve třetí části nezbytný k vytvoření nového JSONObject, který bude tím, co nakonec vrátíme.
Pro další část vytvoříme novou třídu, kterou budu nazývat JSONParserLibros. Tato třída bude mít na starosti čtení asistované služby předchozí metody a ukládání do databáze.
Podívejme se, jak to funguje, například ve filmové databázi.
 soukromá aktivita; soukromý JSONObject jObject; soukromý ProgressDialog progressDialog = null; soukromé Runnable runReadAndParseJSON; public JSONParserPeliculas (aktivita a) {aktivita = a; } public void readAndParseJSON Movies () hodí JSONException {runReadAndParseJSON = new Runnable () {@Override public void run () {try {[/ size] [/ font] readJSON Movies (); } catch (Výjimka e) {} [/ size] [/ font]}}; Vlákno vlákna = nové vlákno (null, runReadAndParseJSON, "bgReadJSONMovies"); vlákno.start (); progressDialog = ProgressDialog.show (aktivita, „Stahování informací“, „Čekejte prosím“, pravda); private void readJSONPeliculas () hodí JSONException {jObject = JSONManager.getJSONfromURL ("http://208.87.120.105/android/service.peliculas.php"); if (jObject! = null) parseJSONPeliculas (jObject.getJSONArray ("filmy")); activity.runOnUiThread (returnRes); } private void parseJSONMovies (JSONArray booksArray) hodí 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 (aktivita); }} private Runnable returnRes = new Runnable () {@Override public void run () {progressDialog.dismiss (); }}; 

Dále máme veřejnou metodu, kterou použijeme k volání naší služby readAndParseJsonLibros. Tato metoda vytvoří nové vlákno spuštění, v rámci kterého bude provedeno volání webové služby, navíc se spustí dialogové okno, které uživatele upozorní, že probíhá stahování.
Jak vidíme, na volání služby jsem vložil IP místní sítě, což odpovídá týmu, kde jsem webovou službu vyvinul. Pokud v době testování máte Wi-Fi router, musíme aktivovat připojení Wi-Fi na našem zařízení Android a připojit se k naší místní síti, abychom měli přístup ke službě. V případě, že nemáme wifi, máme další možnosti, jako je připojení webové služby na server na internetu, data se stáhnou pomocí našeho připojení 3G nebo je můžeme také otestovat pomocí emulátoru Android.Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod
wave wave wave wave wave