بسیار پیش میآید که لازم است برنامههای سیستمعامل اندروید از اینترنت اطلاعات تازه و جدید جمعآوری کنند و این اطلاعات را در اختیار کاربران قرار دهند. راههای مختلفی برای انجام این امر برای برنامههای اندروید تعبیه شده است. به عنوان مثال میتوانید سرویس وب و یا رابط برنامهنویسی برنامههای وب مخصوص به خود، برای این کار، تنظیم و پیادهسازی کنید. یا اینکه از سرویس وب و یا رابط برنامهنویسی برنامههای وب موجود این اطلاعات را درخواست کنید.
آنچه در این مطلب آورده شده است، توضیحاتی پیرامون روش دوم است، یعنی روش استفاده از رابط برنامهنویسی برنامههای وب، برای جمعآوری اطلاعات برای کاربران،که در برنامههای اندورید تعبیه شده است.
دو روش اصلی و پایه در بازیابی اطلاعات از بیشتر سرورهای وب وجود دارند:
1- XML
2- JSON
XML مخففeXtensible Markup Language و به معنای زبان نشانهگذاری امتدادپذیراست و از نظر ظاهری شبیه به زبان HTML ( زبان نشانهگذاری فرامتنی) میباشد، از این نظر که هر دو از جمله زبانهای نشانهگذاری هستند. در مثال زیر ویژگیهای یک انسان به فرمت زبان XMLبیان شده است:
JSON مخفف JavaScript Object Notation است، در واقع این زبان به عنوان وسیلهای برای تجزیهی اشیا بین برنامهها، برای زبان جاوا اسکریپت، طراحی و پیادهسازی شده است. در مقایسه با زبان XML، این زبان ظاهری استاندارد دارد. مثال بالا به زبان JSON به شکل زیر درخواهد آمد:
در ادامهی این متن به نحوهی استخراج و جمعآوری اطلاعات از سرویس وب با استفاده از زبان JSON اشاره میکنیم. برای سادگی بیشتر فرض میکنیم که برنامهی موردنظر تنها یک ویرایشگر متن ساده برای ورودی، یک دکمه برای شروع درخواست سرویس وب و یک نمایشگر متن برای نمایش خروجی و نتیجه دارد.
به عنوان اولین کار لازم باید به دنبال رابط برنامهنویسی برنامهی وب مناسب بود که از آن اطلاعات مورد نظر را استخراج کرد. به عنوان مثال میتوان ازFullContact Person،استفاده کرد. نحوهی سرویسدهی آن به این ترتیب است که آدرس پست الکترونیکی شخص موردنظر را میگیرد و راجع به آن شخص اطلاعاتی را ،از 120 شبکهی اجتماعی مختلف مثل فیسبوک، توییتر و لینکدین، در اختیار قرار میدهد. اطلاعات جمعآوری شده میتواند در یکی از دو فرمت زبانJSON و یا زبانXML باشد. نکتهای که در این زمینه وجود دارد این است که در هر درخواست به رابط سرویس وب، باید یک کلید درج شود، که به آن کلید رابط برنامهنویسی برنامهی وب گفته میشود. در واقع این کلید کدی است که از طرف کامپیوتر برنامهی رابط سرویس وب برای شناسایی برنامهای که به این رابط درخواست داده است یا توسعهدهندهی برنامهی فراخوان و یا کاربر آن در وب، فرستاده میشود. به عبارت دیگر از این کلید به عنوان شناسهی کاربر در سمت سرویسدهندهی رابط برنامهی وب استفاده میشود. میتوان این کلید را به صورت رایگان اما برای استفاده محدود، به اندازه 250 درخواست در ماه، و مدت زمان محدود تهیه کرد.
داشتن این کلید از آن جهت اهمیت دارد که از بین تمام رابطهای سرویس وب تنها آنهایی که کلید دارند مفید و جالب برای استفاده اند. در واقع سایر سرویسها که بدون کلید هستند تقریباً غیرکارا و بلااستفاده اند.
به عنوان مرحله دوم به اتصال به اینترنت اشاره میکنیم، در واقع برنامهی مورد نظر باید به شبکه دسترسی داشته باشد. بنابراین در فایل AndroidManifest.xml باید درخواست اتصال به شبکهی اینترنت اضافه شود. همانطور که در کد دیده میشود این درخواست پیش از برچسب "برنامه" قرار داده میشود.
در مرحلهی بعد، شکل ظاهری برنامه پیادهسازی میشود. همانطور که گفته شد یک ویرایشگر متن برای آدرس الکترونیکی شخص مورد نظر و یک دکمه برای ارسال درخواست به رابط برنامهی وب در نظر گرفته شده است. علاوه بر این دو مورد، یک نمایشگر متن هم برای نمایش نتایج درخواست تعبیه شده است. البته یک نوار نشاندهندهی پیشرفت و مرحلهی کار هم وجود دارد که به صورت پیشفرض نمایش داده نمیشود و در صورتی که دکمهی "جستجو" کلیک شود این نوار نمایان میشود و زمانی که نتیجهی جستجو نمایش داده میشود این نوار دوباره ناپدید میگردد.کد مربوط به پیادهسازی ظاهر موردنظر از قرار زیر است:
در این بخش به نکتهی مهمی اشاره میکنیم و آن هم اینکه در برنامههای قبلی اندروید از نخ مربوط به رابط کاربری برای برقراری ارتباط با شبکه استفاده میشد. همین باعث میشد که برنامه به دلیل معطل شدن برای دریافت پاسخ ارتباط با شبکه، کارایی خود را از دست بدهد. اما در مورد برنامههای جدیدتر محدودیتی بر استفاده از رابط کاربری در این زمینه اعمال شده تا از این مشکل جلوگیری شود. به این ترتیب که برای برقراری ارتباط باید از نخ دیگری استفاده شود. البته برای پیادهسازی این محدودیت کلاسی از پیش طراحی شده است به این ترتیب نیازی نیست که درگیر جزییات مربوط به کار با نخها شد. این کلاس AsyncTask نام دارد.
برای استفاده از این کلاس در این راستا لازم است آن را به 3 زیرکلاس تقسیم کرد. کلاسی برای مدیریت و کنترل پارامترها، کلاسی برای آگاهی از پیشرفت کار و در نهایت کلاسی برای نتیجهی نهایی.
در پایان باید رشتهای که به عنوان خروجی و نتیجهی نهایی فرستاده میشود به شی در زبان جاوا تجزیه گردد. برای این کار توابع و کتابخانههای از پیش طراحی شدهای وجود دارد. البته با قطعه کد زیر هم میتوان این کار را انجام داد.
ثبت نظر