Baru-baru ini saya mulai menggunakan Retrofit 2 dan saya menghadapi masalah dengan penguraian badan respons kosong. Saya memiliki server yang hanya merespons dengan kode http tanpa konten apa pun di dalam tubuh respons.
Bagaimana saya bisa menangani hanya informasi meta tentang respons server (header, kode status, dll)?
Void
yang tidak hanya memiliki semantik yang lebih baik tetapi (sedikit) lebih efisien dalam wadah kosong dan jauh lebih efisien dalam wadah tidak kosong (bila Anda tidak peduli dengan tubuh).Void
. Apakah menggunakanUnit
kode Kotlin akan memberikan manfaat yang samaVoid
dengan Java untuk Retrofit?Unit
di Kotlin TIDAK berfungsi,Void
namun. Saya berasumsi ada pemeriksaan hardcode di suatu tempat.Jika Anda menggunakan RxJava, maka lebih baik digunakan
Completable
dalam kasus inihttp://reactivex.io/RxJava/2.x/javadoc/io/reactivex/Completable.html
dalam jawaban yang diterima:
Jika titik akhir mengembalikan kode respons kegagalan, kode itu akan tetap ada di
onNext
dan Anda harus memeriksa kode respons sendiri.Namun, jika Anda menggunakan
Completable
.Anda hanya akan memiliki
onComplete
danonError
. jika kode respons berhasil, kode respons akan aktif, yangonComplete
lain akan aktifonError
.sumber
onError
Throwable
argumen itu, dalam kasus itu? Saya menemukan ini lebih bersih, tetapi kita sering masih perlu melihat kode respons dan isi untuk kegagalan.Jika Anda menggunakan rxjava, gunakan sesuatu seperti:
sumber
Berikut adalah cara saya menggunakannya dengan Rx2 dan Retrofit2, dengan permintaan PUT REST: Permintaan saya memiliki badan json tetapi hanya kode tanggapan http dengan badan kosong.
Klien Api:
Antarmuka:
Kemudian untuk menggunakannya:
sumber