Tim kami memutuskan untuk mengadopsi Retrofit 2.0 dan saya sedang melakukan penelitian awal untuk itu. Saya pemula di perpustakaan ini.
Saya bertanya-tanya bagaimana cara interceptor
menambahkan header yang disesuaikan melalui Retrofits 2.0 di aplikasi Android kami. Ada banyak tutorial tentang penggunaan interceptor
untuk menambahkan tajuk di Retrofit 1.X, tetapi karena API telah banyak berubah di versi terbaru, saya tidak yakin bagaimana mengadaptasi metode tersebut di versi baru. Juga, Retrofit belum memperbarui dokumentasi barunya.
Misalnya, dalam kode berikut, bagaimana cara mengimplementasikan Interceptor
kelas untuk menambahkan header tambahan? Selain itu, apa sebenarnya obyek yang tidak berdokumen Chain
itu ? Kapan intercept()
dipanggil?
OkHttpClient client = new OkHttpClient();
client.interceptors().add(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Response response = chain.proceed(chain.request());
// How to add extra headers?
return response;
}
});
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_API_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();
/
dan URL API Anda tidak (stuff/post/whatever
)Jawaban:
Lihat ini.
Kotlin
sumber
intercept()
dipicu setiap kali permintaan dikirim dari aplikasi? Bisakah kita menangkap respons perantara untuk pengalihan, atau kita hanya mendapatkan respons akhir?client.interceptors()
. Ini terlihat sepertinew OkHttpClient.Builder().addInterceptor(<Your Interceptor>).build()
Alternatif lain dari jawaban yang diterima
sumber
request.newBuilder().headers(moreHeaders).build()
akan mempertahankan header asli?sumber
Anda dapat membuat header menggunakan Interceptors dengan metode bawaannya seperti ini
sumber
final Context context
dalam daftar parameter.context
sini karena ini adalah logika bisnis.