کار با کتابخانه Retrofit
امروزه کمتر اپلیکیشنی را میتوان یافت که به ارتباط با سرور و ارسال و دریافت اطلاعات بی نیاز باشد. فرایند دریافت لیست محصولات یک فروشگاه آنلاین، ثبت سفارش مشتری و پرداخت آن همگی نیاز به برقراری ارتباط بین کلاینت (یعنی دستگاه کاربر) و سرور را دارد. مدیریت این ارتباط به صورت دستی مستلزم تخصص و صرف وقت فراوان بوده که میتواند باعث بروز مشکلات متعدد نیز بشود. برای حل این مشکل کتابخانههای متعددی توسعه داده شده که برنامه نویس را از نوشتن صدها خط کد پیچیده و درگیر شدن با جزئیات بی نیاز کرده است. در این بخش ابتدا به معرفی کتابخانه Retrofit نسخه ۲ پرداخته سپس در قالب یک مثال ساده به تشریح جزئیات آن میپردازیم که شامل مباحث زیر می باشد:
- معرفی کتابخانه Retrofit
- معرفی فرمت JSON (جی سون) و آشنایی با ساختار آن
- مقایسه JSON با XML
- معرفی سرویسهای صحت سنجی کد JSON
- تشریح HTTP URL و baseUrl در Retrofit
- تعیین حق دسترسی اپلیکیشن اندرویدی جهت اتصال به اینترنت
- معرفی کتابخانه مبدل Gson Converter
- نحوه دریافت اطلاعات با فرمت JSON از وب سرور و نمایش آنها در قالب ListView
- آشنایی با متدهای GET و Call و addConverterFactory در رتروفیت
- آشنایی با متد enqueue و دو حالت onResponse و onFailure
- معرفی سرویسهای fake JSON Server برای ساخت وب سرور آزمایشی
- آشنایی با وب سرور محلی (local) جهت استفاده بجای وب سرور حقیقی
- آشنایی با WampServer جهت راه اندازی وب سرور محلی و نحوه کار با آن
- دریافت دادههای JSON از روی لوکال بجای دریافت از سرور حقیقی در بستر اینترنت
این مبحث در قالب PDF و در ۳۶ صفحه تهیه شده که در ادامه چند صفحهی ابتدایی آن را مشاهده می کنید:
بهنام خدا. در مبحث گذشته با مفهوم وب سرویس و کاربردهای آن آشنا شدیم. در این جلسه به معرفی کتابخانه قدرتمند Retrofit پرداخته و در قالب یک مثال خیلی ساده، نحوه کار با آن را تشریح میکنیم.
معرفی کتابخانه Retrofit 2
کافیست فقط چند ثانیه به کاربرد وب سرویس برای ارتباط یک اپلیکیشن اندرویدی با سرور فکر کنید. چندین مثال به ذهنتان خطور خواهد کرد. از اپلیکیشنهای فروشگاهی گرفته تا سرویسها و بازیهای آنلاین که همگی نیازمند ارسال و دریافت دادهها از یک سرور در بستر اینترنت هستند.
پیاده سازی قابلیت ارتباط بین سرور و اپلیکیشن به روش دستی و نوشتن کامل کدها بسیار پیچیده و زمانگیر بوده و همواره میبایست پارامترهای متعددی مانند ساخت کانکشن، ارسال مجدد درخواستهای ناموفق، تردها (Thread)، ارورها، Parse (تجزیه) کردن پاسخ و…را خودمان هندل (مدیریت) کنیم. بنابراین بهتر است سراغ کتابخانههایی برویم که توسط شرکتهای معتبر منتشر و پشتیبانی میشوند. کتابخانه Retrofit یکی از این کتابخانه هاست. رتروفیت توسط شرکت Square پشتیبانی میشود.
Retrofit یک HTTP client امن برای جاوا و اندروید است که به واسطه آن، ارتباط از نوع HTTP بین سرور و کلاینت (اپلیکیشن) برقرار میشود. در واقع از رتروفیت برای اتصال به وب سرویس از طریق HTTP Connection استفاده میشود.
کتابخانه Volley (والی) را میتوان به عنوان رقیب اصلی Retrofit معرفی کرد. والی توسط گوگل پشتیبانی میشود. در حال حاضر Retrofit به دلیل مزایایی که نسبت به Volley دارد در بین توسعه دهندگان اندروید سهم بیشتری را به خود اختصاص داده. مدتی از ارائه نسخه ۲ کتابخانه Retrofit میگذرد که نسبت به نسخه ۱ تغییرات گسترده ای به همراه داشته که علاوه بر سهولت بیشتر در پیاده سازی نسبت به نسخه قبل، امکانات جدیدی نیز در اختیار توسعه دهنده قرار میدهد.
توجه داشته باشید استفاده از Retrofit به معنی نفی Volley یا سایر کتابخانههای مشابه نیست. هر شخصی برای انتخاب یک گزینه دلایلی دارد. اصلی ترین دلایل من برای انتخاب رتروفیت، سهولت در پیاده سازی و سرعت بالاتر آن نسبت به والی است. البته وقتی از مقایسه سرعت در این دو کتابخانه صحبت میکنیم در واقع تفاوت چیزی در حد چند میلی ثانیه است!
بیشتر از این ذهن شما را درگیر تفاوتهای این دو کتابخانه نمیکنم. اگر مایل هستید بیشتر در مورد مزایا و معایب هرکدام بدانید کافیست چند دقیقه وقت گذاشته و از گوگل کمک بگیرید:
” Retrofit vs Volley” یا “مقایسه Retrofit و Volley”
بیشتر از این شما را غرق تعاریف نمیکنم. مابقی نکات و توضیحات را در حین کار با پروژه ذکر میکنم.
همانطور که ابتدای مبحث اشاره شد، میخواهم این بخش را با یک مثال خیلی ساده پیش ببرم تا ذهن شما صرفا درگیر مطالب اصلی و پایه شود.
یک پروژه با نام SimpleRetrofit و یک Empty Activity ایجاد میکنم. کاری که در این پروژه انجام میدهیم، دریافت داده ها در قالب JSON و نمایش آنها درون یک ListView است.
اگر بخاطر داشته باشید در مبحث گذشته به این نکته اشاره شد که در اندروید از فرمت JSON برای تبادل داده بین وب سرویس و کلاینت (دیوایس کاربر) استفاده میشود. البته استفاده از فرمت XML نیز امکانپذیر است اما دلایل متعددی وجود دارد که توسعه دهندگان را ترغیب به استفاده از JSON میکند.
JSON چیست؟
JSON (مخفف Javascript Object Notation) (تلفظ: جِیسُن یا جِیسان) یک فرمت بسیار سبُک و ساده برای ذخیره و تبادل اطلاعات است که خواندن و نوشتن آن برای انسان و تولید و Parse (تجزیه) کردن آن برای ماشینها آسان است. JSON بصورت text (متنی) بوده و مستقل از زبانهای برنامه نویسی است. یعنی تفاوتی نمیکند اپلیکیشن اندرویدی ما یا وب سرویسی که قرار است به این اپلیکیشن متصل شود و داده ارسال و دریافت کند، با چه زبانهای نوشته شده اند زیرا تمام زبانهای برنامه نویسی روز دنیا مانند Java، PHP، C#، Python و… از JSON پشتیبانی میکنند.
در گذشته برای تبادل اطلاعات از فرمت XML استفاده میشد که با معرفی فرمت JSON توسط Douglas Crockford در سال ۲۰۰۰، نظر اکثر برنامه نویسان را به خود جلب کرد.
به کدهای زیر دقت کنید:
کد اول در فرمت JSON و کد دوم در فرمت XML نوشته شده. هردو اطلاعات یکسانی را نشان میدهند که شامل نام و نام خانوادگی سه دانشجو است. اما همانطور که ملاحظه میکنید کدهای XML از پیچیدگی بالاتری نسبت به JSON برخوردار بوده و درنتیجه حجم بیشتری را نیز اشغال میکند. علاوه بر این، خوانایی XML نیز در مقایسه با JSON برای انسان مقداری سختتر است. بنابراین منطقی ست گزینه ای را انتخاب کنیم که حجم کمتر و در نهایت نیز پهنای باند کمتری را برای انتقال اطلاعات مصرف کند.
در ادامه به بررسی ساختار JSON میپردازم.
در JSON یک شیء (Object) یک مجموعه از زوجهای نام/مقدار (name/value) است. یک object با { (آکولاد باز) شروع، و با } (آکولاد بسته) تمام میشود. در انتهای هر نام یک علامت : (دو نقطه) قرار میگیرد و زوجهای نام/مقدار با علامت , (ویرگول) جدا میشوند.
نمونه کد زیر، ساده ترین حالت JSON است. یک Object با یک جفت نام/مقدار:
در کد فوق یک جفت نام/مقدار مشاهده میکنید که نام آن “city” و مقدارش “Ferdows” است. دقت کنید نام و مقدار هردو داخل “” قرار گرفته اند زیرا هردو از جنس string هستند. نام همیشه باید یک string باشد اما مقدار میتواند رشته (string)، اعداد (number)، آبجکت (object)، آرایه (array)، مقدار بولی (true/false) و یا نال (null) باشد:
کد زیر یک آبجکت با ۴ جفت زوج نام/مقدار است که اطلاعات مربوط به یک شخص را نشان میدهد:
در انتهای نام/مقدار age نباید علامت “,” بکار ببریم زیرا بعد از آن نام/مقدار دیگری نیست.
طبق تعریفی که کردیم، مقدار (value) خود میتواند یک Object دیگر باشد:
در کد فوق، نام products (به معنی محصولات) در قسمت مقدار دارای یک آبجکت است که این آبجکت ۳ جفت نام/مقدار شامل نام محصولات کشاورزی میباشد.
اطلاعات ممکن است از این هم پیچیدهتر باشند. مثلا یک لیست از دانشجوها که شامل نام و نام خانوادگی، شماره دانشجویی و کد ملی است. در اینجا لازم است مقادیر در قالب آرایه (array) تعریف شوند.
یک آرایه با [ (براکت باز) شروع، و با ] (براکت بسته) تمام میشود. مقدارها نیز توسط “,” از یکدیگر جدا میشوند.
در کد فوق یک آبجکت داریم که شامل یک جفت نام/مقدار است که این مقدار خود شامل یک آرایه با چهار آبجکت میباشد.
خب! به اندازه کافی با فرمت JSON آشنا شدیم. به محیط پروژه برمیگردم. میخواهم نام چند شهر در استانهای خراسان را از طریق یک سرور دریافت و درون اپلیکیشن نمایش دهم.
ابتدا یک فایل جیسون ایجاد میکنم. من نام این فایل را city.json گذاشتم. درون این فایل یک آرایه با ۵ آبجکت است که درون هر آبجکت یک جفت نام/مقدار قرار گرفته:
فایل جیسون را روی فضای مربوط به فایلهای دانلودی وبسایت اندروید استودیو آپلود میکنم. URL فایل به اینصورت است:
http://dl.android-studio.ir/files/city.json
با کلیک روی لینک، محتوای فایل روی مرورگر نمایش داده میشود. تمامی مرورگرها از فرمت JSON پشتیبانی میکنند.
در مرورگر فایرفاکس برای محتوای جیسون سه تب تعریف شده که به ترتیب JSON، Raw Data و Headers هستند. در تب اول محتوا بر اساس ساختار جیسون مرتب میشود و اثری از علامتهای آکولاد، براکت و ویرگول نیست. میتوان با کلیک روی هر آبجکت، آنها را باز و بسته کرد. همانطور که مشاهده میکنید آبجکتها به ترتیب شماره گذاری شده اند. اما در حالت Raw Data اطلاعات عینا مطابق آنچه در ادیتور دیدیم نمایش داده میشود:
فایل جیسون را بدون آپلود روی هاست و سرور هم میتوان روی مرورگر باز کرد. کافیست آدرس فایل روی سیستم خود را در قسمت آدرسبار مرورگر وارد کنید:
حتما با Permission (مجوز دسترسی) در اندروید آشنا هستید. کاربر هنگام نصب اپلیکیشن روی دیوایس خود، دسترسیهای اپ را مشاهده و تایید میکند. یکی از این مجوزها دسترسی به شبکه و اینترنت است. ما در این پروژه میخواهیم لیست شهرها را از یک سرور دریافت کنیم بنابراین ابتدا باید مجوز دسترسی به اینترنت را تعریف کنیم. اینکار در AndroidManifest.xml انجام میشود:
<uses-permission android:name="android.permission.INTERNET" />
یک تگ با نام uses-permission و مقدار android.permission.INTERNET به مانیفست اضافه شد. حالا اپلیکیشن ما امکان اتصال و تبادل اطلاعات از طریق شبکه و اینترنت را دارد.
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="ir.android_studio.simpleretrofit"> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
در قدم بعد باید کتابخانه Retrofit را به پروژه اضافه کنیم.
صفحه رسمی کتابخانه:
https://square.github.io/retrofit/
صفحه گیتهاب:
https://github.com/square/retrofit
کافیست خط بالا را از انتهای صفحه معرفی کتابخانه کپی کرده و به build.gradle (app) پروژه اضافه کنیم (ممکن است زمانی که شما در حال مطالعه این آموزش هستید نسخه جدیدتری از این کتابخانه منتشر شده باشد).
بعد از کلیک روی لینک یا به صفحه ای در maven.org منتقل میشوید که اطلاعات کتابخانه ازجمله ورژن آن را نمایش میدهد یا مستقیم شروع به دانلود فایل میکند که عدد مربوط به ورژن در نام فایل دیده میشود (مانند retrofit2-2.4.0.jar). در نهایت این عدد را جایگزین latest.version کرده سپس پروژه را Sync کنید.
همانطور که قبلا اشاره شد، رتروفیت مدیریت دریافت و ارسال اطلاعات بین دیوایس و وب سرویس را برعهده دارد. اما رتروفیت به طور مستقل نمیتواند دادههای دریافتی از وب سرویس را درک کند یا داده ها را به فرمتی که برای وب سرویس قابل پذیرش است ارسال کند. در اینجا باید از تبدیل کنندههایی که بازهم ساخت شرکت Square هستند استفاده کنیم.
در صفحه گیتهاب Retrofit قسمتی با نام Converters وجود دارد که لیست کتابخانههای مبدل برای فرمتهای JSON و XML را نشان میدهد:
ما با JSON سروکار داریم بنابراین باید علاوه بر رتروفیت، کتابخانه Gson Converter را هم به پروژه اضافه کنیم.
به قسمت retrofit-converters و سپس gson در صفحه گیتهاب رتروفیت میروم:
Retrofit Gson Converter خود از کتابخانه Gson گوگل استفاده میکند. وظیفه این کتابخانه تبدیل دادههای Java به Json و بلعکس است.
پس تا اینجا وظایف این دو کتابخانه برای ما روشن شد. Retrofit اطلاعاتی که میبایست از به سرور ارسال شود را در فرمت Java به کتابخانه Gson Converter میفرستد. سپس Gson Converter اطلاعات را به فرمت JSON تبدیل کرده و به سرور ارسال میکند. همینطور اطلاعاتی که باید از سرور به دیوایس ارسال شود ابتدا با فرمت JSON به Gson Converter میرسد. این کتابخانه اطلاعات را از JSON به Java تبدیل کرده و به Retrofit انتقال میدهد.
ملاحظه میکنید خط مربوط به Gradle، در قسمت ورژن بجای عدد latest.version قید شده که با کلیک روی لینک the latest JAR یا Maven عدد را پیدا میکنیم:
در زمان تهیه این آموزش، نسخه نهایی ۲٫۴٫۰ است.
بعد از retrofit این کتابخانه را هم به پروژه اضافه و سینک میکنم تا کتابخانهها از مخزن آنلاین، دانلود شوند:
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.squareup.retrofit2:retrofit:2.4.0' implementation 'com.squareup.retrofit2:converter-gson:2.4.0' }
میخواهیم نام چند شهر در قالب یک ListView نمایش داده شود لذا یک کلاس Model با نام City به پروژه اضافه میکنم. آبجکتهای JSON ای که از سرور دریافت میکنیم یک نام/مقدار با عنوان name و از جنس String هستند. بنابراین name را درون این کلاس تعریف کرده، سپس متد سازنده (Constructor) و Getter آنرا نیز ایجاد میکنم. در این پروژه فقط دریافت اطلاعات از سرور داریم بنابراین فقط به Getter نیاز خواهیم داشت. ساخت Constructor و Getter بدون نیاز به نوشتن دستی کدها و از طریق کلیدهای میانبر alt + insert امکانپذیر است که در مباحث قبل آشنا شدیم.
جهت مطالعه ادامه آموزش، فایل PDF را دانلود نمائید
توجه : سورس پروژه به همراه فایل آموزشی داخل پوشه Exercises قرار داده شده است.
با توجه به اینکه آموزشهای پایه با قیمت پایین در اختیار کاربر قرار گرفته و درآمد حاصل صرف تامین هزینه های وب سایت و تهیه آموزش های آتی می شود، به اشتراک گذاری این فایل با دیگران خلاف اخلاق میباشد.
تعداد صفحات : ۳۶
حجم : ۲ مگابایت
قیمت : ۲۴ هزار تومان
توجه: صرفا در صورتی از درگاه پشتیبان استفاده کنید که قادر به پرداخت از طریق سبد دانلود نباشید.
افزودن به سبد دانلود درگاه پشتیبان
سلام وقت بخیر من میتونم آموزش خرید آنلاین از فروشگاه تهیه کنم؟
همچین آموزشی روی سایت موجود نیست
سلام وقت بخیر. راهی هست اگر به هر صورتی لینک خراب بود برنامه کرش نکنه….. مثلا در این حد که لینک نباشه….. اگر رتروفیت همچین ویژگی نداره، توی کدوم کتابخانه همچین ویژگی میشه پیداش کرد؟
سلام خیلی ممنون میشم پاسخ بدید.
اگه امکانش هست میشه بگید چجوری فایل json خودمون رو روی یک سرور قرار بدیم باید چیکار کنیم؟
واسه هر نوع سرور و هاستی فرق میکنه. هم با کنترل پنل هاست میتونید هم با FTP
سلام و روزتون بخیر
ببخشید مشکل قبلی من حل شد ولی لطف می کنید به این مشکل من پاسخ بدهید. من همه چیز را در مورد وای فای امولاتور تست کردم درست ولی در زمان اجرای برنامه خطای ارتباط می دهد
یه اسکرین شات از خطا بدید ضمن اینکه طوالتون رو در صفحه نامرتبط مطرح کردین. لطفا اسکرین شات رو در بخش دیدگاههای آموزش نصب Genymotion ارسال کنید:
https://android-studio.ir/install-genymotion
سلام و روزتون بخیر
ممنون از مطالب عالیتون من فقط یک مشکل دارم و این که وقتی دستور @Get را می زنم خطا می دهد.خطای Annotations are not allowed here می دهد.گریدل هم بدون خطا syncشده است.
مطمئنید دستور رو جای درستی تعریف می کنید؟ کد خودتون رو با کد داخل آموزش تطبیق بدید
سلام خسته نباشید
من retrofit2 و Gson رو به درستی ایمپلنت کردم اما @GET رو به صورت cant resolve قرمز میزنه و نمیشناسه وقتی هم به صورت دستی میخام ایمپورت کنم:
.import.retrofit2.http بعد از http که نقطه میزارم فقط یدونه ستاره توش وجود داره و GET و بقیه دستورات نیست به نظرتون مشکل از کجاست؟
تمام اینترنت رو گشتم اما کسی به چنین مشکلی نخورده بود یا اگر خورده بود ایمپلنت رو اشتباه انجام داده بود ولی من همه چیز. چک کردم و درسته
سلام. ارور Cannot Resolve معمولا مربوط به عدم دسترسی به مخزن برای دریافت فایل کتابخانه هست. صفحه پرسش های رایج رو بررسی بفرمایید توضیح داده شده
سلام خسته نباشید
من فایل json رو در گوگل درایو آپلود کردم و لینک اون رو بارگذاری کردم اما توسط برنامه شناسایی نشد ولی لینکی که در آموزش گذاشتید (“http://dl.android-studio.ir/files/”) رو به عنوان BaseUrl قرار دادم جواب داد. حالا سوال من اینجاست که فایل رو باید روی چه نوع سروری آپلود کنیم منظور من اینه که این لینکی که گذاشتید مربوط به چه نوع سروری هستش, ابری یا سخت افزاری؟
ممنون میشم که جواب سوال من رو از طریق ایمیل بدید.
در ضمن آموزش هاتون عالین و خیلی مفید هستند و من از دوره ای که خریدم خیلی راضی هستم.
سرویسش مهم نیست. مهم اینه که لینک مستقیم بده بهتون. گوگل درایو لینک مستقیم نمیده
سلام و وقت بخیر
من میخوام در اپلیکیشن یک انیمیشن قرار بدم
مثلاً یک چیز خیلی پر کاربرد مثل انیمیشنی که هنگام لود کردن صفحه های وب دیده میشه که معمولا یک خطی دور خودش میچرخه
بعد برا به کار بردن این انیمیشن ها از gif یا json باید استفاده کرد؟
من اینرو چند بار گوگل کردم اما به نتیجه نرسیدم
لطفا راهنمایی کنید
اگه عبارتی مثل “animations in android studio” رو گوگل میکردید به جواب میرسیدید. ازجمله لینکهای زیر:
https://www.geeksforgeeks.org/animation-in-android-with-example
https://www.tutorialspoint.com/android/android_animations.htm
https://abhiandroid.com/materialdesign/animation
سلام وقت بخیر
من از رتروفیت استفاده کردم ولی برای api 19,17 مشکل داره و خطا میده
از نسخه پایین ترش استفاده کردم بازم درست اجرا نمیشه
ممنون میشم راهنمایی کنید
خطایی که میگیرید رو برای خودتون ترجمه کنید ببینید علتش چیه. اگه متوجه نشدید ارور رو گوگل کنید ببینید در جاهایی مثل stackoverflow.com چه دلایلی براش ذکر شده. اگه بازم به نتیجه نرسیدید ارور رو اینجا بذارید اگه از عهده مون بر اومد راهنمایی کنیم
خطای communication to dl.android-studio.ir is not permuted by network security policy رو گوشی میاد من چطور میتونم حل کنم لطفا راهنمایی کنید کارم خیلی فورسه ممنون
مربوط به بحث امنیت اتصال به وب سرویس هست. اگه برای تست دارید استفاده میکنید که فکر میکنم اگه http رو به https تبدیل کنید حل بشه
سلام این pdf در پروژه ای که خریداری کردیم نیست و باید جداگونه خریداری بشه؟؟؟؟/
بزرگوار فایل PDF و پروژه هردو با هم هستن.
سلام دباره
تو کامنت قبلی یادم رفت بگم که من رفتم صفه گیت هابو نگا کردم (https://github.com/google/gson) و دیدم که برایه نصبش زده
dependencies {
implementation ‘com.google.code.gson:gson:2.8.6’
}
که با pdf فرق داشت
در توضیحات آموزش به اینکه چه کتابخونه هایی نیاز هست اشاره شده
سلام
من قشنگ فایل پی دی اف رو کپی کردم (جز اسم یه کلاس) و به این ارور رسیدم
https://s17.picofile.com/file/8418151276/Capture.PNG
https://s16.picofile.com/file/8418151300/Capture2.PNG
بزرگوار اینقدر تاکید شده قبل طرح سوال، صفحه پرسشها و مشکلات رایج رو بررسی کنید تا وقتتون هدر نره. ارور cannont resolve اونجا توضیح داده شده علتش
خطای communication to dl.android-studio.ir is not permuted by network security policy روی شبیه ساز ظاهر میشه. مشکل کجاست و چجوری حل میشه
لینک رو توی مرورگر بزنید مشکلی نداره و لود میشه؟
بله، حتی اپ رو روی گوشی هم نصب کردم جواب داد ولی با سیمولاتور جواب نمیده
اینترنت امولاتورتون وصل نیست (علامت وای فای)
وایفای وصل بود. android:usesCleartextTraffic=”true” را به مانیفست اضافه کردم مشکل حل شد.
سلام
اقای مطهری من با کتابخانه والی ارتباط میگیرم ویک اروری دارم که هر جای اینترنت که بگید سر زدم ولی به جواب نرسیدم
این ارور فقط روی api های ۱۹و۲۰و۲۱و۲۲و۲۳ اتفاق میوفته و در ورژن های بالاتر مشکلی نیست
com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: SSL handshake aborted: ssl=0xd257a8c0: I/O error during system call, Connection reset by peer
میخواستم بدونم شما با اروری مشابه این برخورد کردین؟ممنون میشم راهنماییم کنید
سلام. من با والی کار نکردم. بگردید ببینید برای API 19 به بالا برای ارتباط با اینترنت آیا تغییری اتفاق افتاده یا اینکه مربوط به خود والی هست این تغییر
سلام.خسته نباشید.میشه درمورد دریافت فایل mp3 هم راهنمایی کنید؟من این فایلو کامل متوجه شدم ولی آیا یه فایل غیرمتنی هم باید با جی سان منتقل بشه؟
url فایل رو باید از این طریق ارسال و دریافت کنید. مهم نیست چه نوع فایلی هستش
دمت گرم مهندس!
من که با آموزش هات حال کردم.
سلام خسته نباشید
ارتباطی بین ورژن retrofit و ورژن api وجود داره آخه مثلا اگه
از از api 23 استفاده کنیم ورژن retrofit باید حتما ۲٫۳ یا کمتر باشه ؟؟
لطفا راهنما یی ام کنید ممنون
خیر. آخرین نسخه رو استفاده کنید
ممنون عالی بود
میشه در مورد bitmap کردن لینک در فایل جیسون برای تولید لیستی از imagView ها هم یک توضیح بدین؟
سلام. بسیارررررممنون از مطالب کامل و مفیدتون عالی بود
فقط ببخشید یک سوال میشه توضیح بدین که فایل جیسون رو توی file manager سایت شخصی مون یک پوشه جدا بزاریم؟
سرور رایگان هم هست معرفی کنید؟
محل قرارگیری فایل که مهم نیست
سلام firebase چیه میشه راهنماییم کنید
داخل سایت سرچ کنید firebase توضیح داده شده
salam khaste nbashid , mn in amoozesh ro chand bar az rah haye mokhtalef eghdam be kharidesh kardam vali har bar mige namovafagh.
elatesh chie?
سلام. احتمالا کارت بانک صادر کننده شما مبالغ کمتر از ۱۰ هزار تومن رو روی درگاه سامان اجازه تراکنش نمیده. لطفا از درگاه پشتیبان استفاده کنید:
https://atisdesign.ir/android-file
سلام
آیا مبحث آپلود فایل(بمثلا تصویر پروفایل) توسط رتروفیت داخل pdf موجود هست و اگر نیست آیا برنامه ای براش دارید؟
خیر در آموزش فعلی موجود نیست. به امید خدا فرصتی شد مباحث تکمیلی برای آموزشها قرار میدم
سلام. آقا من حقیقتا نمیدونم چجوری باید ازت تشکر کنم. یعنی واقعا خیلی خوب و قابل فهم توضیح میدی. دمت گرم.
نیازی به تشکر نیست بزرگوار. موفق باشید
سلام سوالی دارم : برنامه ای نوشته ام که در یک حلقه مرتب از یک وب سرور با استفاده از کتابخانه retrofit اطلاعات دریافت می کند مشکل اینه که خطای ارتباطی زیاد است و متد onFailure تقریبا یکی در میان صدا زده می شود علت چیست؟ آیا کتابخانه Volley بهتر نیست؟ لطفا راهنمائی کنید تشکر.
لازم بذکر است که در ارتباط اینترنتی از طریق wifi خطا کمتر ولی از طریق اوپراتور ایرانسل خطا زیادتر است.
متاسفانه با والی کار نکردم
سلام
من ۳۰۰۰تومن برای اموزش پرداخت کردم و پول از حساب هم کم شد.
ولی داخل قسمت پنلم نوشته پرداخت ناموفق . من چکار کنم؟؟؟
مبلغ از طریق بانک عامل به حسابتون برگشت میخوره بعد از چند ساعت
سلام خسته نباشید
میخواستم بگم من نمیتونم کتابخانه retrofitرو تو پروژه ام سینک کنم از فیلترشکن فری گیت هم استفاده کردم بازم نشد پراکسی اندروید استدیو رو تغییر دادم بازم نشد حتی سیستمو هم پراکسی کردم بازم نتونست این کتابخانه رو سینک کنه
استاد بنظر شما راهی دیگه هم هست که بتونم کتابخانه رو سینک کنم
ممنون میشم راهنمایی کنید
مطلب پرسشهای رایج (تغییر آی پی) رو مطالعه بفرمایید
سلام.برای خوندن اطلاعات با wamp با این ارور روبرو شدم…
I: Failed to connect to /192.168.75.2:80
ipv4 من ۱۹۲٫۱۶۸٫۷۵٫۲ هست
ابزار تغییر IP فعال نیست؟
سلام. ممنون از آموزش عالیییییییییییییی
ممکنه ادامه آموزش رو قرار بدید:( خیلی ضروری بهش نیاز دارم:((
ممنون. سعییم اینه که تا فردا آماده بشه
ادامه ی این مطلب رو نمیشه خرید؟
اگه منظورتون متن کامل همین مبحث هست که انتهای مطلب دکمه “افزودن به سبد دانلود” رو ملاحظه میکنید. اگه منظورتون مبحث بعدی هست، در حال آماده سازیه و ایشالا تا چند روز دیگه منتشر میشه
با سلام و عرض ادب
خواستم بدونم بخش بعدی آموزش رو چه زمانی قرار میدید؟؟
متشکرم…
ان شا الله سعی میکنم کمتر از یک ماه آینده آماده بشه
سلام ممنون از آموزش های عالیتون
لطفا بخش بعدی آموزش رو هرچه زودتر قرار بدین که شدیدا بهش نیاز دارم
بازم ممنون از زحماتتون
سلام
با استفاده از json میشه برای mySQL واقع در هاست کوئری ساخت و اطلاعاتش رو دریافت کرد ؟ توی این آموزش درمورد این موضوع چیزی نوشتید؟
در ابتدای مطلب اشاره شده مثالی که اینجا بررسی میشه صرفا دریافت اطلاعات از فایل هست و خبری از وب سرویس و دیتابیس نیست. موردی که مدنظر شماست مربوط به مبحث بعدی میشه که ان شا الله تا یک ماه آینده منتشر میشه
با سلام
در زمینه تولید اپلیکشن های تجاری آیا تمپلیت های آماده دارید ؟
سلام. خیر بزرگوار
سلام و خسته نباشید
ممنون از آموزش خوبتان
موفق و پیروز باشید
با سلام و عرض ادب
خیلی خیلی ممنون بابت ساخت این آموزش خوب 🙂 🙂
خسته نباشید…..