۱ پوریا شفیعی
@Headers Annotaion در اندروید
وحید گروسی حل شده توسط وحید گروسی

سلام 

سوالی که دارم این هست که دقیقا Header‌ها کاربردشون چی هست

مثلا چه دلیلی داره وقتی میخواهیم request رو ارسال کنیم دیتایی که داره ارسال میشه رو بگیریم و یه سری تغییرات روشون اعمال کنیم (چه با انوتیشن(تکی یا ارایه ای) و چه با Interpolator Chain) ممنون میشم دوستانی که کاربردشو در مثال‌های واقعی میدونن توضیحی ارایه بدن 

حتی چه بسا لینکی باشه که این کاربرد رو توضیح داده باشه (چون سرچ هایی که زدم بدتر گیچ شدم:D)

سپاس گزارم ازتون .

سلام پوریا جان خوبی؟

به خاطر اینکه با استفاده از هدر به سرور همراه درخواستمون اطلاعاتی میدیم که سرور بفهمه مثلا چجوری بهت ریسپانس بده مثال زیر رو ببین:

object ApiServiceContainer {
    private var apiService: ApiService? = null
    fun getApiService(): ApiService {
        if (apiService == null) {
            val logging = HttpLoggingInterceptor()
            logging.level = HttpLoggingInterceptor.Level.BODY
            val httpClient = OkHttpClient.Builder()
            httpClient.addInterceptor { chain ->
                val original = chain.request()
                // Request customization: add request headers
                val requestBuilder = original.newBuilder()
                    .header("Authorization", "Bearer " + token) // <-- this is the important line
                    .header("Accept", "application/json")
                    .header("Content-Type", "application/json")
                val request = requestBuilder.build()
                chain.proceed(request)
            }
            httpClient.connectTimeout(30, TimeUnit.SECONDS)
            httpClient.readTimeout(30, TimeUnit.SECONDS)
            httpClient.addNetworkInterceptor(logging)
            val okHttpClient = httpClient.build()
            val gson = GsonBuilder()
                .setLenient()
                .create()
            val retrofit = Retrofit.Builder()
                .baseUrl(EndPoints.API_BASE_URL)
                .addConverterFactory(
                    GsonConverterFactory.create(gson))
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .client(okHttpClient)
                .build()
            apiService = retrofit.create(ApiService::class.java)
        }
        return apiService!!
    }
}

 

بهترین پاسخ
وحید گروسی ۰۸ تیر ۱۳۹۹، ۱۸:۱۴