سوال در مورد پروژه پیوست

پرسیده شده
فعالیت 1030 روز پیش
دیده شده 621 بار
0

با سلام و عرض ادب و احترام.

در پروژه پیوست، در کلاس Api برای رتروفیت از OkHttp استفاده شده در حالی که در بسیاری از مثال های رتروفیت 2  OkHttp را شامل نمیشوند.

چرا و چه موقع باید از  OkHttp در کلاس Api رتروفیت استفاده شود؟

با سپاس

فایل پیوست

0
حذف شده

سلام وقت بخیر

Retrofit یک wraper هست برای okhttp در واقع http client ما okhttp هست و ریکوئست ها توسط این لایبرری ارسال میشن و retrofit یک لایه هست بر روی این لایبرری تا کدنویسی رو برای برنامه نویس آسون تر کنه

زمانی هم از instance این کلاس یعنی okhttp استفاده میکنیم که بخوایم یکسری شخصی سازی هایی روی ریکوئست هامون ایجاد کنیم که با استفاده از retrofit نمیتونیم انجامشون بدیم یا به سختی انجام میشن

فایل پیوست

0
حذف شده

البته تو این جلسه ای که شما هستین ترکیب Rxjava با Retrofit اهمیت داره

فایل پیوست

حذف شده
سلام وقت بخیر درسته ولی چون به موازات آموزش های سونلرن خودم داشتم روی رتروفیت هم کار میکردم، این سوال پیش آمد. ممنون
حذف شده
خواهش موفق باشید
1
حذف شده

سلام وقت بخیر

 

رتروفیت در پشت زمینه از یه HttpClient استفاده میکند به نام OkHttp .

اگر بخواهید قبل از اینکه request به سرور ارسال شود تغییر روی request اعمال کنید (که هم برای response ها و هم request ها میشه اعمال کرد) لازم هست بر اساس Builder Pattern از OkHttpClient یک اینستنس بگیرید که در اصل ما یک request جدید رو میسازیم تا request اصلی رو تغییر بدیم این کار زمانی انجام میشه که شما بخواهید به عنوان مثال addHeader کنید و Token تون رو قرار بدید تا عمل Authorization رو انجام بدید .

 

برای اینکه با کلیت هم  اشنا بشید کدش رو براتون قرار میدم:

val okHttpClient = OkHttpClient.Builder()
        .addInterceptor {
            val oldRequest = it.request()
            val newRequestBuilder = oldRequest.newBuilder()
            if (TokenContainer.token != null)
                newRequestBuilder.addHeader("Authorization", "Bearer ${TokenContainer.token}")
            newRequestBuilder.addHeader("Accept", "application/json")
            newRequestBuilder.method(oldRequest.method, oldRequest.body)
            return@addInterceptor it.proceed(newRequestBuilder.build())
        }
        .addInterceptor(HttpLoggingInterceptor().apply {
            setLevel(HttpLoggingInterceptor.Level.BODY)
        })
        .build()

    val retrofit = Retrofit.Builder()
        .baseUrl("http://expertdevelopers.ir/api/v1/")
        .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
        .addConverterFactory(GsonConverterFactory.create())
        .client(okHttpClient)
        .build()
    return retrofit.create(ApiService::class)

البته این نکته رو بگم این که چه موقع باید از OkHttp کنید در سرفصل مربوط به پروژه نایکی مثالی از اون زده شده و توضیحات مربوطه داده شده که در جلسه مربوطه اش به تسلط خواهید رسید.

 

فایل پیوست

پوریا شفیعی

توسط

پوریا شفیعی

21 تیر 00