JSON ile Android'den web servislerini okuma

İçindekiler

Bir sunucuya bağlanacağız, JSON ile okuyacağız ve bilgi döndürmesi için ayrıştıracağız ve son olarak cihazımızdaki veritabanına kaydedeceğiz.
Testleri yapacak sunucusu olmayanlar için cihazımızı ve Wi-Fi router'ı kullanarak testleri sorunsuz bir şekilde gerçekleştirebiliriz.
Yapacağımız ilk şey, Eclipse, Betbeans veya en çok sevdiğimiz kodu düzenlemek için herhangi bir programı açmak. Yeni bir projede, aşağıdaki statik ve genel yönteme sahip olacak JSONManager adında yeni bir sınıf oluşturacağız.
 genel statik JSONObject getJSONfromURL (String url) {InputStream is = null; Dizi sonucu = ""; JSONObject json = boş; {HttpClient httpclient = new DefaultHttpClient()'i deneyin; HttpPost httppost = yeni HttpPost (url); HttpResponse yanıtı = httpclient.execute (httppost); HttpEntity varlık = yanıt.getEntity (); = entity.getContent(); } catch (İstisna e) {} try {BufferedReader okuyucu = new BufferedReader (new InputStreamReader (is, "iso-8859-1")), 8); StringBuilder sb = yeni StringBuilder(); Dize satırı = boş; while ((satır = okuyucu.readLine ())! = boş) {sb.append (satır + "\ n"); } yakın (); sonuç = sb.toString(); } yakalama (İstisna e) {} try {json = new JSONObject (sonuç); } catch (JSONException e) {} json döndür; } 

Yöntem, belirttiğimiz URL'ye bağlanacak ve yanıtı bir JSONObject içinde okuyup ayrıştırmaya çalışacaktır.
Yöntemin ilk kısmı http bağlantısını açar ve yanıtı bir InputStream'de alır. İkinci kısım yanıtı okur ve sonunda onu bir String'e geçirmek için bir BufferedReader nesnesiyle ayrıştırır.
Bu Dize, üçüncü bölümde, sonunda geri döneceğimiz yeni bir JSONObject oluşturmak için gereklidir.
Bir sonraki kısım için JSONParserLibros adını vereceğim yeni bir sınıf yaratacağız. Bu sınıf, önceki yöntemin yardım servisini okumaktan ve veritabanına kaydetmekten sorumlu olacak.
Örneğin bir film veritabanında nasıl çalıştığını görelim.
 özel Aktivite faaliyeti; özel JSONObject jObject; özel ProgressDialog progressDialog = null; özel Çalıştırılabilir runReadAndParseJSON; public JSONParserPeliculas (Etkinlik a) {etkinlik = a; } public void readAndParseJSON Movies () fırlatır JSONException {runReadAndParseJSON = new Runnable () {@Override public void run () {deneyin {[/ size] [/ font] readJSON Movies (); } yakalama (İstisna e) {} [/ boyut] [/ yazı tipi]}}; Thread thread = new Thread (null, runReadAndParseJSON, "bgReadJSONMovies"); thread.start(); progressDialog = ProgressDialog.show (etkinlik, "Bilgi indiriliyor", "Lütfen bekleyin", doğru); private void readJSONPeliculas (), JSONException {jObject = JSONManager.getJSONfromURL ("http://208.87.120.105/android/service.peliculas.php"); if (jObject! = null) parseJSONPeliculas (jObject.getJSONArray ("filmler")); aktivite.runOnUiThread (returnRes); } private void parseJSONMovies (JSONArray bookArray), JSONException {for (int i = 0; i <moviesArray.length (); i ++) {Film l = yeni Filmler (); l.setIdMovie (movieArray.getJSONObject (i) .getInt ("id")); l.setTitle (movieArray.getJSONObject (i) .getString ("film")); l.kaydet (etkinlik); }} private Runnable returnRes = new Runnable () {@Override public void run () {progressDialog.dismiss (); }}; 

Ardından readAndParseJsonLibros hizmetimizi çağırmak için kullanacağımız genel yöntemimiz var. Bu yöntem, içinde web hizmetine yapılan çağrının yapılacağı yeni bir yürütme dizisi oluşturur, ayrıca, kullanıcıya bir indirmenin gerçekleştirildiğini bildirecek bir iletişim penceresi başlatılır.
Gördüğümüz gibi servise çağrı yapmak için yerel bir ağın IP'sini koydum, bu web servisini geliştirdiğim ekibe karşılık geliyor. Bunu test ederken, bir Wi-Fi yönlendiriciniz varsa, hizmete erişebilmemiz için Android cihazımızda Wi-Fi bağlantısını etkinleştirmeli ve yerel ağımıza bağlanmalıyız. Wifi olmaması durumunda, web servisini internetteki bir sunucuya kurmak gibi başka seçeneklerimiz de var, veriler 3G bağlantımız kullanılarak indirilecek veya Android emülatörü ile de test edebiliriz.Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.
wave wave wave wave wave