مكتبة Retrofit وطريقة استخدامها

Retrofit واحدة من اشهر المكتبات على الاندرويد للاتصال بـ HTTP اذا ماتم مقارنتها بالمكتبات الاخرى في نفس المجال.

** تحديث Sep/2016 ** تم تحديث المقالة للتناسب مع التحديث الجديد للمكتبة Retrofit 2


الجدير بالذكر ان المكتبة كانت تعاني من الكثير من المشاكل في الاصدار الاول لها 1.x ولكن قامت شركة Square بتحديث المكتبة وجلب العديد من المزايا والخصائص التي ميزت هذه المكتبة.

ملاحظة, جميع الامثلة التي سيتم سردها في هذه المقالة هي من ماتم بنائه في المقالة السابقة طريقة بناء Rest API باستخدام Slim Freamwork

اضافة المكتبة

لاستدعاء مكتبة Retrofit 2.x في مشروعك, فقط قم باضافة السطر التالي في ملف build.gradle

استخدام المكتبة

لـ إستخدام المكتبة فانت بحاجة لانشاء interface واضافة جميع الـ web services الخاصة بمشروعك, مع تحديد البروتوكول المناسب سواء كان GET او غيره.

لـ إستدعاء الـ Service الذي تم انشائه بالاعلى يوجد لديك طريقتين الاولى باستدعاء execute من Retrofit وذلك في حالة كنت تريد synchronous request بما معناه ان الطلب سيتم ارساله الى السيرفر ولكن لن تقوم بقراءة الرد الذي يرجعه السيرفر او معرفة حالة الطلب, اما الطريقة الثانية فهي عن طريق استدعاء enqueue وذلك في حالة كنت تريد asynchronous request بما يعني انك تستطيع التاكد هل الطلب تم تنفيذه بنجاح وتستطيع قراءة الـ Response او الرد الذي يرجعه السيرفر.

انشاء Retrofit Object

اول خطوة لاستدعاء الـ service الذي بالاعلى هو انشاء اوبجكت من Retrofit مع تحديد الخصائص للاوبجكت

من خلال baseUrl تستطيع تحديد الـ ip الخاص بالـ API , و بما ان الـ REST الذي تم بناءه في المقالة السابقة تستقبل object وترجع json  فنحن بحاجة الى الى اضافة Converter حتى يستطيع الـ Retrofit معالجات البيانات.

Synchronous Request

كما ذكرنا سابقا يوجد طريقتين لاستدعاء الـ service الاولى هي Synchronous ولتنفيذ هذا النوع من الطلبات فقط قم باستدعاء دالة execute من الـ service

في هذه الحالة سيقوم التطبيق بالاتصال بالـ web serivce وجلب جميع البيانات الخاصة بالـ Items وتحويلها الـ List من نوع Items, هذا النوع هو Class جديد سنقوم بانشائه ويحتوي على جميع المعلومات التي سيقوم السيرفر بارجاعها في الـ Response.

مع مراعات النقاط التالية, ان الاحرف للمتغيرات يجب ان تكون بنفس حالة الاحرف وايضا ان تكون private ويكون لها get & set methode

Asynchronous Request

 عند استخدام enqueue فان نوع الاتصال هنا هو Asynchronous وذلك يعني انك تستطيع معرفة حالة الاتصال ومعرفة الـ response الذي قام السيرفر بارجاعه عن طريق onResponse و onFailure

onResponse

هي ميثود بداخل كلاس CallBack يتم استدعائها في حالة كان الاتصال ناجح بين التطبيق والسيرفر وتستطيع من خلال هذه الميثود قراءة الـ response الذي قام السيرفر بارجاعه عن طريق  response.body()

onFailure

في حالة حصل خطأ في تنفيذ السيرفس بين التطبيق والسيرفر فان الميثود التي سيتم استدعائها في هذه الحالة هي onFailure وتسطتيع معرفة حالة الخطأ ونوعه عن طريق الـ Object من Throwable

ايقاف الـ Serivce

تستطيع في اي وقت من الاوقات ان توقف الاتصال بين التطبيق والسيرفر عن طريق استدعاء الميثود التالية call.cancel();

التعامل مع Http protocols

 كما ذكرنا سابقا يوجود بعض البروتوكلات للتعامل مع الـ Rest من بينها Get, Post, Put and Delete وطريقة استخدامها مع الـ Retrofit بامر جداً بسيط

 كما تشاهد في المثال السابق فقط قمنا باضافة الـ annotation لكل بروتوكول.

ارسال البيانات

يوجد اكثر من طريقة لارسال البيانات من خلال الـ web service سواء كانت عن طريق ارسالها كـ Object

او عن طريق Path في نفس رابط السيرفس

او عن طريق Part

BaseUrl

يوجد ثلاث طرق للتعامل مع الروابط IP الخاصة بالـ API و الـ web serivce

 32 1كاقتراح يفضل دائما ان يكون الـ BaseUrl ينتهي بـ / بينما الـ  @URL لايبدأ بـ /

Share:
1 comments on مكتبة Retrofit وطريقة استخدامها
حسين
  • يناير 29 2016
  • رد
http://a.top4top.net/p_28n1k11.png السلام عليكم عندما احاول اضافة اي مكتبة يخرج لي هذا الخطا ارجو المساعدة

Post a comment

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *