Четене на уеб услуги от Android с JSON

Съдържание

Ще се свържем със сървър, ще четем и анализираме JSON, така че да връща информация и накрая ще я запишем в базата данни на нашето устройство.
За тези, които нямат сървър, където да провеждат тестовете, можем да използваме нашето устройство и Wi-Fi рутер за извършване на тестове без проблем.
Първото нещо, което ще направим, е да отворим всяка програма за редактиране на кода Eclipse, Betbeans или тази, която ни харесва най -много. В нов проект ще създадем нов клас, наречен JSONManager, който ще има следния статичен и публичен метод.
 публичен статичен JSONObject getJSONfromURL (URL на низа) {InputStream is = null; Низ резултат = ""; JSONObject json = нула; опитайте {HttpClient httpclient = new DefaultHttpClient (); HttpPost httppost = нов HttpPost (url); HttpResponse отговор = httpclient.execute (httppost); HttpEntity обект = response.getEntity (); е = entity.getContent (); } catch (Exception e) {} try {BufferedReader reader = new BufferedReader (new InputStreamReader (is, "iso-8859-1"), 8); StringBuilder sb = нов StringBuilder (); Низов ред = null; while ((line = reader.readLine ())! = null) {sb.append (line + "\ n"); } близо е (); резултат = sb.toString (); } catch (Exception e) {} try {json = new JSONObject (result); } catch (JSONException e) {} връщане json; } 

Методът ще се свърже с посочения от нас URL адрес и ще се опита да прочете и анализира отговора в JSONObject.
Първата част на метода отваря http връзката и получава отговора в InputStream. Втората част чете отговора и го анализира с обект BufferedReader, за да го предаде накрая на String.
Този низ е необходим в третата част за създаване на нов JSONObject, който ще бъде това, което най -накрая ще върнем.
За следващата част създаваме нов клас, който ще нарека JSONParserLibros. Този клас ще отговаря за четенето на помощната услуга на предишния метод и запазването в базата данни.
Нека да видим как работи, например в база данни с филми.
 частна дейност; частен JSONObject jObject; частен ProgressDialog progressDialog = null; частна Runnable runReadAndParseJSON; публичен JSONParserPeliculas (Дейност а) {activity = a; } public void readAndParseJSON Movies () хвърля JSONException {runReadAndParseJSON = new Runnable () {@Override public void run () {try {[/ size] [/ font] readJSON Movies (); } catch (Изключение д) {} [/ size] [/ font]}}; Тема на нишката = нова нишка (null, runReadAndParseJSON, "bgReadJSONMovies"); thread.start (); progressDialog = ProgressDialog.show (дейност, "Изтегляне на информация", "Моля, изчакайте", вярно); private void readJSONPeliculas () изхвърля JSONException {jObject = JSONManager.getJSONfromURL ("http://208.87.120.105/android/service.peliculas.php"); if (jObject! = null) parseJSONPeliculas (jObject.getJSONArray ("филми")); activity.runOnUiThread (returnRes); } private void parseJSONMovies (JSONArray booksArray) изхвърля 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 ("филм")); л. запазване (дейност); }} частен Runnable returnRes = нов Runnable () {@Override public void run () {progressDialog.dismiss (); }}; 

След това имаме публичния метод, който ще използваме за извикване на нашата услуга readAndParseJsonLibros. Този метод създава нова нишка на изпълнение, в рамките на която ще се осъществява повикването към уеб услугата, освен това се стартира диалогов прозорец, който ще уведоми потребителя, че се извършва изтегляне.
Както виждаме, поставих IP на локална мрежа, за да се обадя до услугата, това съответства на екипа, в който съм разработил уеб услугата. По време на тестването на това, ако имате Wi-Fi рутер, трябва да активираме Wi-Fi връзката на нашето устройство с Android и да се свържем с нашата локална мрежа, за да имаме достъп до услугата. В случай, че нямаме wifi, имаме други опции, като например монтиране на уеб услугата на сървър в интернет, данните ще бъдат изтеглени чрез нашата 3G връзка или можем да ги тестваме и с емулатора на Android.Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка
wave wave wave wave wave