تاپیک آموزش لایبرری رتروفیت
سلام دوستان
این تاپیک به منظور ایجاد یک آموزش جامع و کاربردی از لایبرری رتروفیت ایجاد شده و دوستانی که با این لایبرری کار کردند و اطلاعاتی دارند لطفا کمک کنند تا یک آموزش جامع به زبان فارسی رو از رتروفیت داشته باشیم
من تازه کار با رتروفیت رو شروع کردم و سعی میکنم هر مطلب جدیدی که یاد گرفتم رو تو تاپیک قرار بدم تا بتونید استفاده کنید.

Retrofit یکی از مشهورترین کتابخانههای کلاینت HTTP برای اندروید است که از لحاظ عملکرد از بسیاری کتابخانههای دیگه بهتر و سریعتر عمل میکنه. کار کردن باهاش هم ساده است. این کتابخانه اخیرا و بخصوص در نسخه دو با تغییرات زیادی همراه بوده. نسخه دو که چند ماهی از ارائه اون بیشتر نمیگذره به سرعت در حال تغییر هست.
به نام خدا
ببخشید که این چند روز نتونستم به تاپیک سر بزنم. یه مقدار مشغله داشتم که شرمنده تون شدم
امروز قصد داریم ابتدای کار با لایبرری رتروفیت آموزش بدم و برای ابتدای کار یه داده ای رو از سرور دریافت کنیم
فقط دوستان اگر کمی و کاستی توی این آموزش هست ببخشید چون خودم تازه کار با اونو شروع کردم
ابتدای کار که همه میدونید باید dependency کتابخونه رو وارد فایل گریدل کنیم ولی بهتره که این کد رو از این لینک بدست بیارید
compile 'com.squareup.retrofit2:retrofit:2.1.0'
بعد از اضافه کردن این لایبرری نوبت میرسه به کلایتی که میخواین استفاده کنید
به طور خودکار خود رتروفیت از کلاینت داخلی خودش استفاده میکنه ولی برای سرعت بیشتر میتونید از OkHttpClient استفاده کنید
این هم کد گریدل این کلاینت
compile 'com.squareup.okhttp3:okhttp:3.4.2'
خوب اول کار شما باید یه اینترفیس بسازید
اینم کدی که خودم تو برنامه استفاده کردم
public interface APIBaseAdapter {
@GET("service.php") Call<ResponseBody> getIndex();
}
همونطور که میدونید توی این کد من از متد GET استفاده کردم و در سروری که میخوام بهش متصل بشم یه فایل پی اچ پی هست که میبینید
اول اینکه بجای GET همونطور که میدونید میتونید از متد POST و غیره همینجا استفاده کنید
دوم اینکه متد call همونطور که میبینید یه متد جنریک هست و من ترجیح دادم نوعش رو ResponseBode قرار بدم
سوم اینکه این url که اینجا بعد از GET نوشته میشه قسمتی از url اصلی هست که متغیره و جلوتر بهتون میگم که چطور واردش کنید
الان یه کلاس دیگه میسازیم تا بتونیم از رتروفیت استفاده کنیم
public class APIAdapterCreator {
private APIBaseAdapter mTService;
public APIAdapterCreator(){
OkHttpClient okHttpClient = new OkHttpClient();
Gson gson = new GsonBuilder() .setLenient() .setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") .create();
Retrofit retrofit = new Retrofit.Builder() .client(okHttpClient) .baseUrl("http://192.168.137.110/file-server/") .addConverterFactory(GsonConverterFactory.create(gson)) .build();
mTService = retrofit.create(APIBaseAdapter.class);
}
public APIBaseAdapter getmTService(){
return mTService;
}
}
همونطور که میبینید اول از Okhttpclient یه نمونه ساختیم
بعد هم از Gson convertor یک نمونه سازی کردم
(البته این رو هم بگم که میتونید کد گریدل convertor
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
که من یادم رفت اینو بهتون بگم)
قسمت baseurl هم قسمتی از آدرستون هست که ثابته و تغییر نمیکنه چون معمولا توی یه برنامه ممکنه به از چند تا متد با پارامترهای مختلف استفاده کنیم و باید قسمت ثابت رو اینجا وارد کنیم و قسمتی که متغیر هست رو بعد از متد GET تو اینترفیسمون مثل در اینجا من آدرسم لوکال هست و همونطوری که میبینید وارد کردمش
خب الان بیس کار آمادست و باید بریم سراغ اصل مطلب
توی اکتیویتیمون برای گرفتن اطلاعات من از کد زیر استفاده کردم و توضیحات روی همین مثال بهتون میدم
APIAdapterCreator apiAdapterCreator = new APIAdapterCreator(); APIBaseAdapter mTService = apiAdapterCreator.getmTService();
Call<ResponseBody> call = mTService.getIndex(); call.enqueue(new Callback<ResponseBody>() { @Override public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
String string = response.body().string().toString(); Log.i("Log", "String = : " + string);
} @Override public void onFailure(Call<ResponseBody> call, Throwable t) { t.printStackTrace(); Log.i("LOG", "error === " + t.getMessage()); } });
خب همونطور که میبینید اول یه نمونه از کلاسی که داخلش رتروفیت رو نمونه سازی کردیم، میسازیم.
بعد هم یه نمونه از اینتریسمون میسازیم و از متدی که توش ساختیم استفاده میکنیم
قسمت بعد هم که یه نمونه از متد کال ساختیم مربوط به ارسال درخواست هست که مثل همین که نوشتم استفاده کنید و سعی کنید فعلا کلیشه ای یاد بگیرید به مرور خودتون وقتی استفاده کنید میفهمید که چی هستن
اما جواب درخواست هم توی onResponse میاد و من یه استرینگ ساختم و اونو درش ریختم و ازش لاگ گرفتم
بسته به جوابی که برای درخواستتون میاد خودتون باید تغییرش بدین مثلا میتونید یه جیسون بگیرید و از مدلی که ساختید رو با مقدارهای جیسون مقدار دهی کنید و بقیشو مثل آموزش های استاد پیش ببرید
دوستان بازم بگم شرمنده که این توضیحات یه مقدار مبتدیانست ولی خب کار راه بندازه
لطفا نظر بدید تا تاپیک رشد کنه
یه چیز دیگه
از دوستانی که با رتروفیت کار کردند هم میخوایم تا به ما در آموزش این کتابخونه کمک کنند
نظر بدید تا آموزش ها بهتر بشه
ببخشید که وقتتون رو گرفتم
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .