Recientemente comencé a usar Retrofit 2 y me enfrenté a un problema al analizar el cuerpo de respuesta vacío. Tengo un servidor que responde solo con código http sin ningún contenido dentro del cuerpo de respuesta.
¿Cómo puedo manejar solo la metainformación sobre la respuesta del servidor (encabezados, código de estado, etc.)?
Void
que no solo tiene una mejor semántica sino que es (ligeramente) más eficiente en el caso vacío y mucho más eficiente en un caso no vacío (cuando simplemente no te importa el cuerpo).Void
. ¿Unit
Usar el código Kotlin daría el mismo beneficio queVoid
en Java para Retrofit?Unit
en Kotlin NO funciona,Void
sin embargo. Supongo que hay un cheque codificado en alguna parte.Si usa RxJava, entonces es mejor usarlo
Completable
en este casohttp://reactivex.io/RxJava/2.x/javadoc/io/reactivex/Completable.html
en la respuesta aceptada:
Si el punto final devuelve el código de respuesta de falla, todavía estará en el
onNext
y tendrá que verificar el código de respuesta usted mismo.Sin embargo, si lo usas
Completable
.solo tendrás
onComplete
yonError
. si el código de respuesta es exitoso, se disparará; de loonComplete
contrario, se dispararáonError
.fuente
onError
Throwable
argumento, en ese caso? Encuentro este limpiador, pero a menudo todavía tenemos que mirar el código de respuesta y el cuerpo para detectar fallas.Si está utilizando rxjava, use algo como:
fuente
Así es como lo usé con Rx2 y Retrofit2, con la solicitud PUT REST: Mi solicitud tenía un cuerpo json pero solo un código de respuesta http con un cuerpo vacío.
El cliente Api:
La interfaz:
Luego para usarlo:
fuente