Recentemente, comecei a usar o Retrofit 2 e enfrentei um problema ao analisar o corpo de resposta vazio. Eu tenho um servidor que responde apenas com código http sem nenhum conteúdo dentro do corpo da resposta.
Como posso lidar apenas com meta informações sobre a resposta do servidor (cabeçalhos, código de status etc.)?
Void
que não apenas tenha melhor semântica, mas seja (ligeiramente) mais eficiente no caso vazio e muito mais eficiente em um caso não vazio (quando você simplesmente não se importa com o corpo).Void
. Usar oUnit
código Kotlin ofereceria o mesmo benefício doVoid
Java for Retrofit?Unit
no Kotlin NÃO funciona,Void
no entanto. Presumo que exista um cheque codificado em algum lugar.Se você usa o RxJava, é melhor usar
Completable
neste casohttp://reactivex.io/RxJava/2.x/javadoc/io/reactivex/Completable.html
na resposta aceita:
Se o nó de extremidade retornar o código de resposta de falha, ele ainda estará no
onNext
e você precisará verificar o código de resposta.No entanto, se você usar
Completable
.você terá apenas
onComplete
eonError
. se o código de resposta for bem-sucedido, ele disparará doonComplete
contrárioonError
.fonte
onError
Throwable
argumento conterá, nesse caso? Acho isso mais limpo, mas muitas vezes ainda precisamos examinar o código de resposta e o corpo quanto a falhas.Se você estiver usando o rxjava, use algo como:
fonte
Aqui está como eu o usei com Rx2 e Retrofit2, com solicitação PUT REST: Minha solicitação tinha um corpo json, mas apenas código de resposta http com corpo vazio.
O cliente Api:
A interface:
Então, para usá-lo:
fonte