Dokumentasi Retrofit 2 mengatakan:
Header yang perlu ditambahkan ke setiap permintaan dapat ditentukan menggunakan pencegat OkHttp.
Itu dapat dilakukan dengan mudah menggunakan versi sebelumnya, inilah QA terkait.
Tetapi menggunakan retrofit 2, saya tidak dapat menemukan sesuatu seperti setRequestInterceptor
atau setInterceptor
metode yang dapat diterapkan pada Retrofit.Builder
objek.
Juga tampaknya tidak ada lagi RequestInterceptor
di OkHttp . Dokumen Retrofit merujuk kita ke Interceptor yang saya tidak begitu mengerti bagaimana menggunakannya untuk tujuan ini.
Bagaimana saya bisa melakukan ini?
enqueue
saya tidak dapat melihat header default.new OkHttpClient.Builder()
malahnew OkHttpClient()
Versi Retrofit Terbaru DI SINI -> 2.1.0.
versi lambda:
versi panjang jelek:
versi lengkap:
file gradle (Anda perlu menambahkan interseptor logging jika Anda berencana menggunakannya):
sumber
Untuk Logging permintaan dan respons Anda, Anda memerlukan interseptor dan juga untuk mengatur header Anda memerlukan interseptor, Inilah solusi untuk menambahkan interseptor sekaligus menggunakan retrofit 2.1
Sekarang di objek retrofit Anda, tambahkan header ini di klien
sumber
Coba tajuk jenis ini untuk Retrofit 1.9 dan 2.0. Untuk Jenis Konten Json.
Anda dapat menambahkan lebih banyak tajuk yaitu
Tambahkan ke header secara dinamis:
Panggil Anda metode yaitu
Atau
Ingin melewati setiap kemudian Buat objek HttpClient dengan http Interceptor:
Kemudian tambahkan ke objek retrofit
UPDATE jika Anda menggunakan Kotlin, hapus yang
{ }
lain itu tidak akan berfungsisumber
Dalam kasus saya
addInterceptor()
tidak berhasil menambahkan header HTTP ke permintaan saya, saya harus menggunakanaddNetworkInterceptor()
. Kode adalah sebagai berikut:Dan kode interseptor:
Ini dan lebih banyak contoh tentang inti ini
sumber
Jika Anda menggunakan metode addInterceptor untuk menambahkan HttpLoggingInterceptor, metode ini tidak akan mencatat hal-hal yang ditambahkan oleh interseptor lain yang diterapkan setelah HttpLoggingInterceptor.
Misalnya: Jika Anda memiliki dua interseptor "HttpLoggingInterceptor" dan "AuthInterceptor", serta HttpLoggingInterceptor yang diterapkan terlebih dahulu, Anda tidak dapat melihat http-params atau header yang disetel oleh AuthInterceptor.
Saya menyelesaikannya, melalui menggunakan metode addNetworkInterceptor.
sumber
HttpLoggingInterceptor
sebagai pencegat terakhir untuk melihat permintaan akhir.Gunakan Klien Retrofit ini
Saya meneruskan JWT bersama dengan setiap permintaan. Harap tidak keberatan dengan nama variabel, ini agak membingungkan.
sumber
Di kotlin menambahkan interseptor terlihat seperti itu:
sumber
Pustaka RetrofitHelper yang ditulis dalam kotlin, akan memungkinkan Anda melakukan panggilan API, menggunakan beberapa baris kode.
Tambahkan header di kelas aplikasi Anda seperti ini:
Dan kemudian lakukan panggilan Anda:
Untuk informasi lebih lanjut, lihat dokumentasi
sumber
Versi Kotlin akan menjadi
sumber