یکی از مواردی که چند روز پیش با اون مواجه شدم این بود که برنامهنویسی رو دیدم که برای برقراری ارتباط با سرور ساید از HTTP کلاینت آپاچی استفاده میکرد. این مورد باعث شد که امروز در مورد اینکه چرا نباید از HTTP Client پکیج آپاچی استفاده کنیم مطلبی کوتاه بنویسم.
در گذشته این موضوع که توسعهدهنگان اندروید تصمیم گرفته بودند Apache HTTP Client رو به عنوان یک API در اندروید قرار دهند بسیار جالب توجه بود. اما با گذشت زمان با اینکه بسیاری از برنامهنویسان اندروید ایرانی همچنان از این API به عنوان تنها آپشن خود در برنامه نویسی استفاده میکردند، در سطح بینالمللی شاهد این بودیم که روز به روز از محبوبیت این پکیج کاسته میشد و در یکی از اعلامیههای Google I/O در سال 2015 اعلام شد که این API رفته رفته منسوخ خواهد شد. پس از این اعلامیه، گوگل با معرفی نسخه 6 اندروید پشتیبانی از Apache HTTP Client را بطور کلی قطع کرد و این تابع در لیست توابع منسوخ شده قرار گرفت.
بنابراین اگر شما نیز جز توسعهدهندگانی هستید که هنوز ارادت خاصی به این API دارید و به دلیل آپدیت نکردن محیط توسعه و SDK خودتون از Deprecate شدن آن بیخبرید، توجه کنید که در صورت استفاده از این API برنامه شما در گوشیهای با اندروید 6 به بالا اجرا نخواهد شد.
پس همین امروز برای حفظ سازگاری برنامه خود با اندروید 6 اقدام کنید. اگر برنامه شما از این کلاینت استفاده میکند و نسخههای 2.3 به بالا را هدف گرفتهاید، از کلاس HttpURLConnection
استفاده کنید. این API نسبت به کلاینت آپاچی کارامدتر بوده و مصرف اینترنت را طریق transparent compression (فشردهسازی) و کش کردن پاسخ، کمتر میکند؛ لذا مصرف باطری نیز کاهش میابد.
همچنین میتوانید از پکیجهای محبوب دیگری چون OkHttp یا Spring جهت برقراری ارتباط به HTTP استفاده کنید. اما اگر مصّر به استفاده از Apache HTTP Client هستید، کافیست dependency زیر را به build.gradle خود اضافه کنید تا این پیکج به عنوان یک کتابخانه به پروژه شما اضافه شده و برنامه شما با اندروید 6 به بالا هم سازگاری داشته باشد:
android { useLibrary 'org.apache.http.legacy' }
خیلی از برنامه های ایران با این آپدیت میشن ولی با اندروید 6 سازگاری ندارن، اونم بخاطر اینکه سازندش نمیدونه این API دیگه وجود نداره