مشخصات مقاله
-
2249
-
0.0
-
8309
-
0
-
0
اتصال به اینترنت و دسترسی به منابع آن در اندروید
این آموزش نحوه ی دسترسی به منابع و محتوا از طریق HTTP را برای شما شرح می دهد.
پروژه ی آموزش حاضر در محیط برنامه نویسی Eclipse نوشته شده، مبتنی بر ویرایش 1.6 زبان Java و ورژن 5.0 سیستم عامل اندروید می باشد.
آموزش مروری بر اتصال به اینترنت و دسترسی به منابع از اینترنت در اندروید
آموزش دسترسی به اینترنت در اندروید
اندروید پکیج java.net را شامل می شود. با وارد کردن این پکیج در پروژه می توانید به منابع و محتوای مورد
ge which can be used to access network resources. The base class for HTTP network access in the java.net package is the HttpURLConnection class. نیاز از طریق شبکه دسترسی پیدا کنید. کلاس پایه برای اتصال HTTP در پکیج java.net، کلاس HttpURLConnection است.
Android contains the standard Java network java.net packa
اجرای عملیات مربوط به شبکه با API جاوا طاقت فرسا است. بدین معنی که توسعه دهنده می بایست connection را باز کند/ببندد، cache را فعال نموده و مطمئن شود که عملیات مربوط به شبکه در background thread (به صورت موازی و در پس زمینه) اجرا می شوند.
تعداد زیادی کتابخانه ی کد باز (open source) وجود دارد که در اختیار برنامه نویس قرار گرفته و انجام عملیات مزبور را آسان می سازد. پرکاربردترین این کتابخانه ها به شرح زیر می باشند:
- access – OkHttp برای اتصال و دسترسی بهینه HTTP
- Retrofit REST based clients – Retrofit برای سرویس گیرنده های مبتنی بر REST
- Glide image processing – Glide برای پردازش تصویر
آموزش مجوز اتصال به اینترنت
به منظور اتصال به اینترنت، اپلیکیشن شما به مجوز android.permission.INTERNET احتیاج دارد. در ورژن های جدید کتابخانه های اندروید (API version های نوین)، این مجوز به صورت خودکار به اپلیکیشن اعطا می شود.
آموزش بررسی وضعیت اتصال به اینترنت
دستگاه های اندروید همیشه به اینترنت دسترسی ندارند. برای بررسی اینکه آیا دستگاه مورد نظر به شبکه و اینترنت دسترسی دارد یا خیر، اپلیکیشن شما بایستی مجوز android.permission.ACCESS_NETWORK_STATE را داشته باشد.
جهت بررسی وضعیت اتصال به اینترنت، می توانید از کد زیر استفاده کنید.
public boolean isNetworkAvailable() {
ConnectivityManager cm = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
// if no network is available networkInfo will be null
// otherwise check if we are connected
if (networkInfo != null && networkInfo.isConnected()) {
return true;
}
return false;
}
همان طور که در بالا گفته شد، برای بررسی وضعیت اتصال به شبکه، اپلیکیشن شما به مجوز ACCESS_NETWORK_STATE احتیاج دارد.
آموزش روش های بهینه برای اتصال و دسترسی به اینترنت در اندروید
در اپلیکیشن های اندرویدی، شما باید از اجرای عملیات طولانی و سنگین در UI thread خودداری نمایید. از جمله ی این عملیات می توان به اتصال به اینترنت و دسترسی به فایل اشاره کرد.
از ویرایش 3.0 به بعد اندروید، سیستم طوری تعبیه شده است که اگر دسترسی به اینترنت در UI thread رخ دهد، خطای NetworkOnMainThreadException صادر شده و به تبع آن سیستم به طور ناگهانی از کار می افتد.
روش معمول و بهینه برای اتصال به اینترنت و دسترسی به منابع سطح وب (در یک اپلیکیشن با کیفیت)، استفاده از یک سرویس است. گفتنی است که می توان از یک activity یا fragment نیز به اینترنت دسترسی را انجام داد، اما استفاده از سرویس برای نیل به این هدف طراحی بهینه تری را برای اپلیکیشن شما رقم می زند و همچنین به ساده نگه داشتن کد activity شما کمک شایانی می نماید.
جهت تست می توانید با درج تکه کد زیر در ابتدی متد onCreate() کلاس activity، دسترسی به اینترنت را در thread اصلی اپلیکیشن فراهم کنید.
StrictMode.ThreadPolicy policy = new StrictMode. ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); Unresolved directive in 001_article.adoc - include::../JavaNetworking/010_overview.adoc[] == Web Sockets
Web Socket یک استاندارد مبتنی بر HTTP برای تبادل ناهمزمان پیغام (asynchronous message-based communication) بین سرویس گیرنده و سرویس دهنده است. به منظور راه اندازی این ارتباط، یک درخواست HTTP GET با یک HTTP header خاص ایجاد نمایید.اگر سرویس دهنده این درخواست را پذیرفت، سرویس گیرنده و سرویس دهنده می توانند با هم پیغام (داده هایی را) رد و بدل کنند.
این پیغام ها می توانند متن یا داده های binary باشند. لازم به ذکر است که داده های مورد تبادل می بایست کم حجم باشند چرا که پروتکل web socket اساسا به منظور انتقال payload و داده های کم حجم تعبیه و طراحی شده است.
بهترین روش برای تبادل پیغام و داده بین کلاینت و سرور، قرار دادن آن در قالب JSON می باشد.
Messages can be text or binary data and should be relatively small, as the web socket protocol is intended to be used with small payloads in the data.
It is good practice to use JSON as data format for the messages.