دریافت اطلاعات از json در اندروید بوسیله volley

دریافت اطلاعات از json در اندروید بوسیله کتابخانه volley

در این آموزش قصد داریم نحوه اتصال به وب سرویس Rest با استفاده از کتابخانه volley و پردازش اطلاعات دریافتی از json در برنامه نویسی اندروید را آموزش بدهیم.

Volley کتابخانه برنامه نویسی شبکه برای آندروید است که اولین بار در کنفرانس گوگل IO سال ۲۰۱۳  معرفی شد. دسترسی به منابع شبکه مانند ارسال و دریافت اطلاعات و یا آپلود و دانلود فایل از کارهایی است که Volley انجام میدهد. خب تا قبل از معرفی Volley برنامه نویسان چطور برنامه های تحت شبکه و اینترنت می نوشتند؟

کتابخانه ها و روشهایی که قبل از معرفی Volley استفاده میشدند همگی با رابط کاربری تداخل داشتند و به نوعی کند عمل می کردند. تا قبل از معرفی Volley کلاس استاندارد جاوا java.net.HttpUrlConnection و کلاس org.apache.http.client  که توسط بنیاد آپاچی معرفی شده بود تنها راههای دسترسی به منابع شبکه و اینترنت و توسعه برنامه های REST بودند.

 

پرواضح است که هر دو کلاس فوق باگ داشتند و متدهایی مانند caching را بطور پیشفرض پشتیبانی نمی کردند و برای بعضی کارهای ساده مانند استفاده از cache برای تصاویر باید کلی کد نوشته میشد و بارها ناچار بودیم چرخ را دوباره اختراع کنیم.

 

دلایل استفاده از Volley :

 

دلیل اول: منسوخ کردن استفاده از دو کلاس HttpUrlConnetcion و HttpClient.

در نسخه های اولیه Android API مانند GingerBread و Froyo این دو کلاس بسیار مشکل ساز بودند و کلی باگ شناخته شده داشتند که هرگز برطرف نشدند. از API نسخه ۲۲ کلاس HttpClient منسوخ اعلام شد یعنی در نسخه های آتی حذف خواهد شد.

 

دلیل دوم : منسوخ کردن استفاده از AsyncTask.

از زمان معرفی Honeycomb یعنی API 11 استفاده از AsyncTask برای تعاملات بین کلاینت و سرور اجباری شد.AsyncTask درخواست های بین کلاینت و سرور را در یک ترید جداگانه انجام میداد تا ترید اصلی برنامه دچار اختلال نشود. این تغییر بنیادی منجر به استفاده کسترده از مشخصه زیر گردید.

حال به سراغ آموزش نحوه اتصال به وب سرویس Rest در اندروید و پردازش اطلاعات از json با استفاده از کتابخانه volley می رویم:

مراحل پیاده سازی پروژه :

۱. پروژه جدید ایجاد نمایید.
ما اسم پروژه را VolleyJson و نام پکیج برنامه را ir.mobileprogram.volleyjson در نظر گرفتیم.

۲. حال یک فولدر جدید (Package ) در مسیر src ⇒ New ⇒ Package  بنام app ایجاد نماییددر نتیجه نام پکیج این قسمت ir.mobileprogram.volleyjson.app خواهد شد.


۳٫ کتابخانه volley.jar را دانلود کنید و در پوشه libs پروژه قراردهید.

۴٫  در مسیر فولدر app یک کلاس جدید به نام AppController.java ایجاد نمایید
این کلاس تمامی object های مورد نیاز کتابخانه volley را ایجاد می کند.

 

۵٫ کلاس AppController.java در زمان launch شدن برنامه اجرا خواهد شد. بنابراین این کلاس را در AndroidManifest.xml در تگ <application> به صورت زیر اضافه نمایید :

 

همچنین به مجوز Internet نیاز داریم بنابراین این permisson را در منیفیست اضافه کنید:

۶٫ کد های زیر را به activity_main.xml اضافه نمایید :
اینصفحه شامل دو Buttonاست که یکی برای json object request بکار می رود و دیگری برای json array request . اطلاعات parse شده از از json در Textview نمایش داده می شود.

 

۷. در MainActivity.java کد های زیر را اضافه نمایید:

مهم :
خروجی json در حالت استاندارد میتواند یکی از این ۲ نوع باشد :

۱- JSON Object : اگر json با } شروع شده باشد از نوع JsonObject است.
۲- JSON Array : اگر json با ] شروع شده باشد از نوع JsonArray است.

حال فرامیگیریم که چگونه هر کدام از درخواست ها را پردازش کنیم و فیلد های مورد نیاز را از درونشان استخراج کنیم:

Making JSON Object Request

۸٫ کتابخانه volley کلاس JsonObjectRequest  را برای دریافت اطلاعات وب سرویس که از نوع
json object request است (یعنی با { شروع و بسته می شود ) در اختیار ما قرار می دهد. ما از این کلاس استفاده میکنیم و اطلاعات خروجی json را تبدیل به String کرده و در Textview نمایش می دهیم:

 

یک نمونه خروجی JsonObject :
URL: http://api.androidhive.info/volley/person_object.json

Making JSON Array Request

۹٫ همچنین کتابخانه volley کلاس JsonArrayRequest را برای دریافت اطلاعات وب سرویس که از نوع
json Array request است (یعنی با  [ شروع و بسته می شود ) در اختیار ما قرار می دهد. ما از این کلاس استفاده میکنیم و اطلاعات خروجی json را تبدیل به String کرده و در Textview نمایش می دهیم:

 

یک نمونه خروجی JsonArray :

URL: http://api.androidhive.info/volley/person_array.json

حال پروژه را اجرا کنید و خروجی هر کدام از درخواست ها را ببینید :

کد کامل MainActivity.java :

11 Comments

  1. محمود دی ۸, ۱۳۹۴ Reply
    • موبایل پروگرامAuthor دی ۸, ۱۳۹۴ Reply
  2. محمود دی ۸, ۱۳۹۴ Reply
    • موبایل پروگرامAuthor دی ۹, ۱۳۹۴ Reply
  3. محمد دی ۲۲, ۱۳۹۴ Reply
    • محمد دی ۲۲, ۱۳۹۴ Reply
  4. علی اسفند ۱۹, ۱۳۹۴ Reply
  5. Alijenab شهریور ۱, ۱۳۹۵ Reply
  6. حسین آبان ۱۹, ۱۳۹۵ Reply
  7. erfan اردیبهشت ۷, ۱۳۹۶ Reply
  8. parisa تیر ۲۷, ۱۳۹۶ Reply

دیدگاه خود را منتشر کنید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *