دوره مجازی اندروید (جلسه 13): آموزش Json و دریافت اطلاعات از سرور با Volley

- visibility ۴۸ mode_comment

به نام خدا، دوستان سلام. توی این جلسه با ساختار داده Json آشنا می شویم. Json یک ساختار برای تبادل و ذخیره سازی اطلاعات هست که امروزه بیشنر وب سایت های معتبر برای Api سرویس خود، از این ساختار استفاده می کنند. در این جلسه همچنین به کار با کتابخانه ی Volley را آموزش خواهیم داد.

به دلیل مهم بودن این بخش 2 مثال کاملا متفاوت حل خواهیم کرد، یک مثال مربوط به ساختن یک اپ آب و هوا خواهد بود که اطلاعات آب و هوای کنونی شهر خاصی را نمایش خواهد داد. و در مثال بعدی قسمت هایی که در جلسه ی مربوط به RecyclerView طراحی کردیم را با استفاده از اطلاعات سرور پیاده سازی خواهیم کرد.

مطالب مطرح شده در این جلسه عبارتند از :

  • JSON چیست؟
    • Json Object
    • Json Array
    • Json key
    • Json value
    • ایجاد JsonObject
  • دریافت اطلاعات از وب سایت و سرور راه دور با کتابخانه گوگل (Volley)
  • Volley چیست؟
    • JsonObjectRequest
    • JsonArrayRequest
    • RequestQueue چیست؟
    • آموزش اضافه کردن Request به RequestQueue
    • RetryPolicy چیست؟
    • ست کردن RetryPolicy روی Request
info توجه

این مطلب یک جلسه از دوره آموزش اندروید می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در دوره آموزش اندروید

comment دیدگاه کاربران
بهنام

سلام من تو بیلد کردن پروژه به مشکل خوردم سرچ کردم و تو فایل builde.gradle جایگزین کردم jcenter رو با mavenCenteral() مشکل بیلد کردن حل شد ولی این کتابخانه volley رو نمی تونم با پروژه سینک کنم به نظرتون مشکلش بخاطر تغییر jcenter هست ؟

سعید شاهینی

سلام، هم mavenCenteral و هم Jscenter رو داخل Build.gradle اضافه کنید.

سیروان

سلام
استاد واقعا عصابم خراب شد هر چی میکنم اصلا دانلودنمیشه یه ساعته لودینگ آورده
حتی فیلتر شکن سایفون هم روشنه و سایت های فیلتر شده رو باز میکنه اما این اندرویید استودیو واصعا عصاب خورد کن
تقریبا دو هفتست رویه این مشکل برخوردم و ستوپ کردم ساعت ارسال نظر رو هم ببینید چقدر زحمت میکم لطفا هرچه سریعتر جواب بدهید
مشکل از build.gradle
compile ‘com.android.volley:volley.1.0.0’
—————————————
http://rozup.ir/view/1842891/2.png

سعید شاهینی

سلام، دلیلش این هست که سایفون اصلاً کار نمی کنه داخل اندروید استودیو!!! باید از vpn استفاده کنید، که محل اقامتتون خارج از ایران نشون داده باشه، از سرویس هایی مثل kerio یا cisco استفاده کنید!

سیروان

از سایت https://vpnm.me/ خریدم
http://rozup.ir/view/1848448/1.png
http://rozup.ir/view/1848454/12121.png

مثل سایفون هست سایت های فیلتر شده رو باز میکنه اما واسه اندروید استودیو کار نمیکنه
به غیر از هدر دادن پول هیچ سودی نداشت .
اگه میشود لطفا فیلتر شکن خود را آپلود کنید و واسه من بفرستید تا دانلود کنم و سپس سایتی که از اون خودتان خریدید را به من بگید تا از اون یوزر نیم و پسوردو بخرم

سعید شاهینی

دوست عزیز nextvpn هم همین مشکل رو داره و location تغییر نمی ده، از سرویس های cisco استفاده کنید. با سرورهای آمریکا متصل بشید.

سلام
دقیقا کد های شما رو روی اندروید استودیو کپی کردم و اونو تو گوشیم ذخیره کردم(adbd)ولی اطلاعات اب و هوا رو نمیگیره
اندروید استودیوی من
http://rozup.ir/view/1861821/1.png
ولی تو اندروید استودیو شما اطلاعات رو میگیره
http://rozup.ir/view/1861825/2.png
مشکل از چیست؟؟؟البته شما از جنی موشن استفاده کردید و من از ADBD
البته منcisco VPN رو دانلود کردم و اون VPNروشنه
و دلیل اینکه من از جنی موشن نمیتونم استفاده کنم اینه که وی پی ان کاسیو رو قطع و وصل میکنه در حالی که اندروید استودیو به درستی وی پی ان کار میکنه و اونو قطع و وصل نمیکنه

چکار کنم استاد؟؟

سعید شاهینی

داخل اندروید مونیتور هر اروری به وجود بیاد نشون داده می شه، لطفا از ارورش اسکرین شات بگیرید

سیروان

ارور ها
http://rozup.ir/view/1863095/46.png
http://rozup.ir/view/1863096/7.png
————-
کد های جاوا
http://rozup.ir/view/1863093/s.png
http://rozup.ir/view/1863094/so1.png

سعید شاهینی

permission مربوط به اینترنت رو داخل مانیفست اضافه نکردید، داخل ویدیو آموزش دادم مثل اینکه حواستون نبوده

سیروان

فایل ndkرو دانلود کردم گفتم شاید مشکل از این باشه که ارور ها تغیر پیدا کرد
http://rozup.ir/view/1867390/12111.png
http://rozup.ir/view/1867391/11.png
هنوز نتونستم این مشکلو حل کنم ساعت 5 شبه
این همه تلاش شبانه روز به نتیجه ای نرسیدم
استاد چاره چیست؟؟؟چیکار کنم؟مشکل کار از کجاست؟

سعید شاهینی

سلام، Ndk برای چی دانلود کردید؟! ndk برای نوشتن برنامه با c++ هست!

سیروان

همینطوری دانلود کردم گفتم شاید مشکل از این باشه
استاد نظر دیگه رو تایید نکردید.
نظر قبلیم رفته تو قسمت اسپم ها؟؟؟یعنی سیستم وردپرس نظر قبلی رو اسپم مشخص کرده؟
دیدگاه شما در انتظار بررسی است.

سعید شاهینی

نظر دیگه ای از شما ثبت نشده!

Hamed Noktedan

سلام
تو این جلسه به جز volley کتابخانه های دیگه ای هم معرفی کردید به نام های retforfit و okayhttp البته نمیدونم اسمشون رو درست نوشتم یا نه
آیا تو جلسات بعدی حرفی از این ها زده شده؟
یه توضیحی از این ها بدید لطفا
ممنون

سعید شاهینی

سلام، بهترین کتابخونه در حال حاضر Volley هست که آموزش دادیم در این دوره، به نظرم احتیاجی به کتابخونه های دیگه نیست

ح حسین

سلام
توی صفحه زیر volley رو DEPRECATED معرفی کرده !
https://github.com/mcxiaoke/android-volley
حالا باید بجای اون چی استفاده کرد ؟
دلیل DEPRECATED کردن volley چی بوده و کتابخانه جایگزین اون چیه ؟ و چه مزایایی نسبت به volley داره ؟
لطفا توضیح کامل بدین
تشکر

سعید شاهینی

سلام، این کتابخانه ای که شما داخل پیجش بودی مربوط به گوگل نیست، بلکه کپی از volley بوده که دیگه اون کاربر نمی خواد توسعه اش رو ادامه بده

ح حسین

وقت بخیر استاد
لطف میکنید صفحه اصلی volley رو لینک بدین ؟
کتابخانه های این چنینی چه مزیتی نسبت به volley خود گوگل دارند که این همه طرفدار دارند ؟

سعید شاهینی


طرفدار ندارند، قبلا اضافه کردن volley گوگل دردسر داشت، همه از کتابخانه های فرعی استفاده می کردن اما الان دیگه volley به bintray اضافه شده و نیازه به کتابخانه های فرعی نیست

علیرضا رحمانی

سلام به غیر از سایتی که معرفی کردید سایت دیگه ای رو میشه معرفی کنید که امکان ارسال فایل جیسون رو داشته باشه ؟؟ برای تمرین بیشتر میخوام

سعید شاهینی

منظورتون از امکان ارسال فایل Json چیه؟

سلام استاد عزیز . چرا از کتابخانه Retrofit به جای Volley استفاده نکردید؟؟

سعید شاهینی

سلام چون volley بهتره!

امین عظیمی

سلام استاد. خسته نباشید.
یک سوال برام پیش اومد
تو url شهر به عنوان لندن تعریف شده، ولی شما به تابع GetCurrentWeather تهران رو دادید. نیازی نیست مشخص کنید که تهران با لندن جایگزین بشه؟

توضیحی که برای اینترفیس دادید برام خیلی زمان برد تا متوجه بشم، سطح بالا بود
تا اینکه دوستم به این صورت گفت و با یک جمله :
با اینترفیس میشه کلاسهایی ایجاد کرد که توابعش در کلاسهای دیگه قابل override شدن باشه

سعید شاهینی

سلام، چرا! اصلا داخل url باید پارامتر تابع قرار داده بشه، من برای مثال همون لندن گذاشتم توی url باشه.
interface یه قرارداد هستش که می گه هرکس می خواد منو Implement کنه باید این توابع رو پیاده سازی کنه. این ساده ترین تعریف interface هستش.

علی غلامی

سلام استاد من کتاب خونه volley گرفتم ولی همین اول JasonObjectRequest برام نمیاره خودمم تایپ میکنم error میده 😥

سعید شاهینی

سلام٬ JsonObjectRequest درسته نه jason و نکته دیگه اینکه امکان داره پروژه رو دوباره بیلد نکردید

علی غلامی

استاد درست شد ممنون

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.
1 2