close
تبلیغات در اینترنت
دانلود کتابخانه Retrofit,نحوه ی کار با Retrofit,آموزش نصب Retrofit,معر
صفحه اصلی پرشین استک

{ پرشین استک }

به دنیای برنامه نویسی خوش آمدید
|


پرشین استک تنها یک سایت نیست بلکه یک پروژه همگانی می باشد


تعداد مطالب :
142


تعداد توسعه دهندگان :
11


تاریخ امروز :
جمعه 29 تیر 1397

به کانال تلگرام ما بپیوندید


×

لیست سوالات من

افزودن

دانلود کتابخانه Retrofit برای اندروید + پروژه

کتابخانه Retrofit در نرم افزار هایی که نیاز به ارتباط با سرور و رد و بدل کردن اطلاعات بین نرم افزار و سرور دارند ، بسیار کاربرد دارد .  طبق گفته ی خود سازنده های این کتابخانه (Square) این کتابخانه یک نوع امن کلاینت http برای اندروید و جاوا است .

Retrofit ، می تواند HTTP APIشما را به یک Java interface تبدیل کند .

public interface GitHubService{
@GET("users/{user}/repos")
Call<List<Repo>> listRepos(@Path("user") String user);
}

 

کلاس Retrofit یک پیاده سازی از رابط GitHubService را ایجاد می کند .

 

Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com/")
.build();

GitHubService service = retrofit.create(GitHubService.class);

 

هر Call از GitHubService ایجاد شده می تواند یک درخواست HTTP همزمان یا غیرمستقیم به وب سرور راه دور ایجاد کند .

 

Call<List<Repo>> repos = service.listRepos("octocat");

 

استفاده از حاشیه نویسی برای درخواست HTTP :

1. جایگزینی پارامتر URL و پشتیبانی از پارامتر پرس و جو

2. تبدیل شی به بدنه درخواست ( به عنوان مثال ، JSON و بافر های پروتکل )

3. درخواست متعدد آپلود فایل و بدنه

 

 تعریف  API

حاشیه نویسی روی متد های یک اینترفیس و پارامتر های آن نشان می دهد که چگونه یک درخواست مدیریت می شود .

 

متد درخواست (Request)

هر متد باید یک حاشیه نویسی HTTP داشته باشد که متد درخواست و URL مرتبط را ارائه می دهد . پنج حاشیه نویسی ساخته شده (built-in) وجود دارد :

GET ، POST ، PUT ، DELETE و HEAD . همچنین URL مربوط به منبع در حاشیه نویسی مشخص شده است .

@GET("users/list")

 

همچنین شما می توانید پارامتر پرس و جو را در URL مشخص کنید :

@GET("users/list?sort=desc")

 

 دستکاری URL

یک URL درخواست می تواند به صورت پویا و با بلاک ها و پارامتر های جایگزینی ، بروز شده باشد .

یک بلوک جایگزین یک رشته الفبایی است که توسط {and} احاطه شده است . یک پارامتر متناظر باید با Path@ و به همان شکل حاشیه نویسی شده باشد .

 

@GET("group/{id}/users")
Call<List<User>> groupList(@Path("id") int groupId);

 

 همچنین پارامتر های پرس و جو می توانند افزوده شوند :

@GET("group/{id}/users")
Call<List<User>> groupList(@Path("id") int groupId,@Query("sort") String sort);

برای پارامتر های پرس و جوی پیچیده (مرکب) می تواند یکMapمی تواند استفاده شود .
@GET("group/{id}/users")
Call<List<User>> groupList(@Path("id") int groupId,@QueryMap Map<String, String> options);

  

 

بدنه درخواست (Request)

یک شی را می توان با استفاده از حاشیه نویسی Body@ به عنوان بدنه درخواست HTTP استفاده کرد .

@POST("users/new")
Call<User> createUser(@Body User user);

 

 شی با استفاده از مبدل مشخص شده در نمونه Retrofit ، تبدیل می شود .

 

فرم رمز گذاری شده و چند بخش

همچنین متد ها می توانند برای ارسال داده های فرم رمز گذاری شده و چند بخش تعریف شوند . داده های فرم رمز گذاری شده (Form-encoded) زمانی ارسال می شوند که FormUrlEncoded@ در متد موجود باشد . هر ارزش کلیدی (key-value) با Field@ حاشیه نویسی شده است که حامل نام و شی ارائه دهنده مقدار می باشد .

@FormUrlEncoded
@POST("user/edit")
Call<User> updateUser(@Field("first_name") String first, @Field("last_name") String last);

 

درخواست های چند بخشی زمانی استفاده می شوند که Multipart@ روی متد موجود باشد . هر بخش با Part@ تعریف می شود .

@Multipart
@PUT("user/photo")
Call<User> updateUser(@Part("photo") RequestBody photo, @Part("description") RequestBody description);

 

 قطعات چند بخشی از یکی از مبدل های Retrofit استفاده می کنند و یا می توانند RequestBody را اجرا کنند تا ترتیب خود را اداره کنند .

 

دستکاری هدر (Header)

شما می توانید هدر های استاتیک را با استفاده از حاشیه نویسی Headers@ برای یک متد تنظیم کنید .

@Headers("Cache-Control: max-age=640000")
@GET("widget/list")
Call<List<Widget>> widgetList();

 

 

@Headers({
"Accept: application/vnd.github.v3.full+json",
"User-Agent: Retrofit-Sample-App"
})
@GET("users/{username}")
Call<User> getUser(@Path("username") String username);

 

 توجه داشته باشید که هدر ها یکدیگر را بازنویسی نمی کنند . تمام هدر ها با همان نام در درخواست ذکر می شوند . یک هدر درخواست می تواند با حاشیه نویسی Header@ به صورت پویا بروز شود . یک پارامتر متناظر باید به Header@ ارائه شود . اگر مقدار null باشد ، هدر حذف خواهد شد . در غیر این صورت ، toString روی مقدار فراخوانی شده و نتیجه استفاده می شود .

@GET("user")
Call<User> getUser(@Header("Authorization") String authorization)

 

 هدر هایی که قصد اضافه شدن به درخواست ر دارند می توانند با OkHttp interceptor مشخص شوند .

 

همگام در مقابل نا همگام

نمونه های Call می توانند به صورت همگام یا ناهمگام اجرا شوند .هر نمونه تنها یکبار می تواند مورد استفاده قرار گیرد ، اما با فراخوانی ()clone می توان نمونه جدیدی ایجاد کرده و استفاده کرد .

در اندروید ، callback ها روی یک thread اصلی (main thread) اجرا می شوند . در JVM ، همچنین callback ها روی همان thread اتفاق می افتند که درخواست HTTP را جرا کرده است .

 

پیکربندی Retrofit

Retrofit کلاسی است که از طریق آن اینترفیس های API شما به اشیا قابل دسترسی تبدیل می شوند . به طور پیش فرض ، Retrofit پیش فرض های سالمی را برای پلتفرم شما ارائه می دهد اما برای سفارشی سازی اجازه می دهد .

 

مبدل ها (Converters)

به طور پیش فرض Retrofit فقط می تواند بدنه های HTTP را به نوع ResponseBody مربوط به OkHttp تبدیل کند و تنها نوع RequestBody خودش را برای Body@ می تواند بپذیرد . مبدل ها می توانند برای پشتیبانی از انواع دیگر اضافه شوند .

شش ماژول هم خانواده ، کتابخانه های محبوب را برای راحتی شما ارائه می دهند :

1. com.squareup.retrofit2:converter-gson : Gson

2. com.squareup.retrofit2:converter-jackson : Jackson

3. com.squareup.retrofit2:converter-moshi : Moshi

4. com.squareup.retrofit2:converter-protobuf : Protobuf

5. com.squareup.retrofit2:converter-wire : Wire

6. com.squareup.retrofit2:converter-simplexml : Simple XML

7. com.squareup.retrofit2:converter-scalars : Scalars

 

در اینجا یک مثال برای استفاده از کلاس GsonConverterFactory برای ایجاد پیاده سازی اینترفیس GitHubService نشان داده شده است . این اینترفیس از Gson استفاده می کند .

Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com")
.addConverterFactory(GsonConverterFactory.create())
.build();

GitHubService service = retrofit.create(GitHubService.class);

 

 مبدل های شخصی

اگر شما می خواهید با API ارتباط برقرار کنید که حاوی فرمت محتوایی می باشد که از طرف Retrofit پشتیبانی نمی شود یا می خواهید از کتابخانه متفاوتی برای پیاده سازی یک فرمت خارجی استفاده کنید ، شما به راحتی می توانید مبدل خودتان را ایجاد کنید . [Create a class that extends the Converter.Factory class and pass in an instance when building your adapter](نیاز به ترجمه)

 

Maven

<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>retrofit</artifactId>
<version>2.3.0</version>
</dependency>

 

 Gradle

compile 'com.squareup.retrofit2:retrofit:2.3.0'

 

 Retrofit حداقل جاوای 7 یا اندروید 2.3 را نیاز دارد .

 

ProGuard

اگر شما از ProGuard در پروژه خودتان استفاده می کنید ، کد های زیر را اضافه کنید :

# Platform calls Class.forName on types which do not exist on Android to determine platform.
-dontnote retrofit2.Platform
# Platform used when running on Java 8 VMs. Will not be used at runtime.
-dontwarn retrofit2.Platform$Java8
# Retain generic type information for use by reflection by converters and adapters.
-keepattributes Signature
# Retain declared checked exceptions for use by a Proxy instance.
-keepattributes Exceptions

 

[Retrofit uses Okio under the hood, so you may want to look at its ProGuard rules as well](نیاز به ترجمه)

 

دانلود کتابخانه

رمز فایل ها : ندارد

حجم فایل : 88.6 کیلوبایت

ورژن : 2.3.0

 

دانلود پروژه

رمز فایل ها : ندارد

حجم فایل : 423 کیلوبایت

صفحه اصلی

118

23 / 06 / 1396

PERSIAN STACK


چرا گاهی اوقات API موقعیت مکانی سرویس گوگل پلی ، موقعیت مکانی اشتباهی را برمی گرداند ؟

ادامه مطلب

613

چگونه نرم افزار ضبط صدای اندرویدی بسازیم ؟

ادامه مطلب

549

چرا TextView کلمات را با حروف می شکند ؟

ادامه مطلب

497

دانلود تمامی API های اندروید

ادامه مطلب

435

قسمت شانزدهم - جدول ها در HTML

ادامه مطلب

419

چرا وبسایت تجارت الکترونیک Magento 2 در Webview اندروید کار نمی کند ؟

ادامه مطلب

363

دانلود پروژه نمایش جستجوی کتاب برای اندروید

ادامه مطلب

347

چگونه Google API برای سطح API 25 را پیدا کنیم ؟

ادامه مطلب

345

دانلود سورس کد بازی اندرویدی Klooni 1010! + فایل APK

ادامه مطلب

259

آیا راهی برای یافتن تغیرات ماه در نمای تقویم اندروید (calendar view) وجود دارد ؟

ادامه مطلب

243

در تکمیل خودکار اندروید ، دلیل dispatchProvideAutofillStructure() not laid out چیست ؟

ادامه مطلب

233

چرا زمانی که با استفاده از cordova در اندروید 7.0 ، اس ام اس ارسال می کنیم ، با اثتثنای (Exception) امنیتی مواج

ادامه مطلب

227

آموزش ساخت و شخصی سازی Navigation Drawer در اندروید استودیو

ادامه مطلب

211

دانلود تمامی نسخه های gradle برای اندروید

ادامه مطلب

195

دانلود سورس کد اپلیکیشن هواشناسی برای اندروید + فایل APK

ادامه مطلب

179

چگونه ارور com.bumptech.glide.Registry$NoModelLoaderAvailableException: Failed to find any ModelLoaders را در اندروید رفع کنیم ؟

ادامه مطلب

173

دانلود اسکریپت جاوای PS-CH# - ایجاد ورودی متنی پیشرفته

ادامه مطلب

121

دانلود کتابخانه Retrofit برای اندروید + پروژه

ادامه مطلب

119

دانلود سورس کد تمامی نسخه های تلگرام + فایل های نصبی

ادامه مطلب

113

دانلود کتابخانه GSON برای اندروید + پروژه

ادامه مطلب

111

دانلود اسکریپت جاوای PS-CH# - ایجاد ورودی متنی پیشرفته

ادامه مطلب

یکشنبه 05 آذر 1396

قسمت هفدهم - لیست ها در HTML

ادامه مطلب

یکشنبه 21 آبان 1396

چگونه می توان با استفاده از CSS ، رنگ placeholder را تغییر داد ؟

ادامه مطلب

یکشنبه 21 آبان 1396

قسمت شانزدهم - جدول ها در HTML

ادامه مطلب

شنبه 20 آبان 1396

دانلود تمامی نسخه های gradle برای اندروید

ادامه مطلب

شنبه 20 آبان 1396

قسمت پانزدهم - عکس ها در HTML

ادامه مطلب

جمعه 19 آبان 1396

قسمت چهاردهم - لینک ها در HTML

ادامه مطلب

یکشنبه 14 آبان 1396

آموزش ساخت و شخصی سازی Navigation Drawer در اندروید استودیو

ادامه مطلب

یکشنبه 14 آبان 1396

قسمت سیزدهم - CSS در HTML

ادامه مطلب

شنبه 13 آبان 1396

قسمت بیست و پنجم (قسمت آخر) - آموزش ساخت بازی حدس

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیست و چهارم - آموزش نحوه ی پردازش فایل ها در جاوا

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیست و سوم - برنامه تکمیلی جاوا (6)

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیست و دوم - معرفی آرایه ها در جاوا

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیست و یکم - برنامه تکمیلی جاوا (5)

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت بیستم - معرفی مفهوم وراثت در جاوا

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت نوزدهم - برنامه تکمیلی جاوا (4)

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت هجدهم - معرفی عبارات کنترلی در جاوا

ادامه مطلب

پنجشنبه 11 آبان 1396

قسمت هفدهم - برنامه تکمیلی جاوا (2-3)

ادامه مطلب

چهارشنبه 10 آبان 1396

چگونه در برنامه نویسی اندروید ، یک ListView با متن و عکس بسازیم ؟

ادامه مطلب

سه شنبه 09 آبان 1396

چگونه در برنامه نویسی اندروید از فونت شخصی خود استفاده کنیم ؟

ادامه مطلب

سه شنبه 09 آبان 1396

دانلود تمامی نسخه های gradle برای اندروید

ادامه مطلب

آموزش ساخت و شخصی سازی Navigation Drawer در اندروید استودیو

ادامه مطلب

چگونه در برنامه نویسی اندروید ، یک ListView با متن و عکس بسازیم ؟

ادامه مطلب

چگونه در برنامه نویسی اندروید از فونت شخصی خود استفاده کنیم ؟

ادامه مطلب

چگونه در برنامه نویسی اندروید می توان آیدی موبایل را بدست آورد ؟

ادامه مطلب

چگونه در برنامه نویسی اندروید برنامه تماس بسازیم ؟

ادامه مطلب

چگونه در برنامه نویسی اندروید یک منو ساده بسازیم ؟

ادامه مطلب

چگونه در برنامه نویسی اندروید از برنامه اسکرین شات بگیریم ؟

ادامه مطلب

چگونه می توان در اندروید RTL یا LTR صفحه را ثابت کرد ؟

ادامه مطلب

چگونه می توان در اندروید حالت افقی (landscape) را غیر فعال کرد ؟

ادامه مطلب

آموزش استفاده از دیتابیس آماده در پروژه اندرویدی

ادامه مطلب

دانلود سورس کد تمامی نسخه های تلگرام + فایل های نصبی

ادامه مطلب

دانلود کتابخانه GSON برای اندروید + پروژه

ادامه مطلب

دانلود سورس کد اپلیکیشن آموزش زبان انگلیسی + فایل APK

ادامه مطلب

چگونه نگذاریم در آغاز اکتیویتی ، EditText فوکوس را بدست آورد ؟

ادامه مطلب

چگونه کیبورد پیش فرض اندروید (Soft Keyboard) را پنهان کرده یا ببندیم ؟

ادامه مطلب

چرا سرعت مجازی ساز اندروید کم است و چگونه می توان سرعت آنرا افزایش داد ؟

ادامه مطلب

تفاوت بین واحد های اندازه گیری "px" , "dp" , "dip" و "sp" چیست ؟

ادامه مطلب

دانلود سورس کد اپلیکیشن آهنگ سازی برای اندروید + فایل APK

ادامه مطلب

دانلود سورس کد اپلیکیشن هواشناسی برای اندروید + فایل APK

ادامه مطلب

× برای نظر گذاشتن یا پاسخ دادن به سوالات باید در سایت عضو باشید !

برای حمایت از ما روی بنر های زیر کلیک کنید .

برای سفارش تبلیغات به ما ایمیل بزنید .

ارتباط با ما