Récemment, j'ai commencé à utiliser Retrofit 2 et j'ai rencontré un problème avec l'analyse du corps de réponse vide. J'ai un serveur qui ne répond qu'avec du code http sans aucun contenu dans le corps de la réponse.
Comment puis-je gérer uniquement les méta-informations sur la réponse du serveur (en-têtes, code d'état, etc.)?
Void
qui a non seulement une meilleure sémantique, mais qui est (légèrement) plus efficace dans le cas vide et beaucoup plus efficace dans un cas non vide (lorsque vous ne vous souciez pas du corps).Void
. L'utilisationUnit
dans le code Kotlin donnerait-elle le même avantage queVoid
dans Java for Retrofit?Unit
dans Kotlin ne fonctionne PAS,Void
cependant. Je suppose qu'il y a un chèque codé en dur quelque part.Si vous utilisez RxJava, il est préférable d'utiliser
Completable
dans ce cashttp://reactivex.io/RxJava/2.x/javadoc/io/reactivex/Completable.html
dans la réponse acceptée:
Si le point de terminaison renvoie le code de réponse d'échec, il sera toujours dans le
onNext
et vous devrez vérifier le code de réponse vous-même.Cependant, si vous utilisez
Completable
.vous n'aurez que
onComplete
etonError
. si le code de réponse réussit, il se déclenchera,onComplete
sinon il se déclencheraonError
.la source
onError
Throwable
argument, dans ce cas? Je trouve cela plus propre, mais nous avons souvent encore besoin de regarder le code de réponse et le corps pour les échecs.Si vous utilisez rxjava, utilisez quelque chose comme:
la source
Voici comment je l'ai utilisé avec Rx2 et Retrofit2, avec la requête PUT REST: Ma requête avait un corps json mais juste un code de réponse http avec un corps vide.
Le client Api:
L'interface:
Alors pour l'utiliser:
la source