Saltar al contenido

¿Cómo puedo manejar el cuerpo de respuesta vacío con Retrofit 2?

Solución:

Editar:

Como señala Jake Wharton,

@GET("/path/to/get")
Call<Void> getMyData(/* your args here */);

es la mejor manera de hacerlo frente a mi respuesta original:

Puedes devolver un ResponseBody, que omitirá el análisis de la respuesta.

@GET("/path/to/get")
Call<ResponseBody> getMyData(/* your args here */);

Entonces en tu llamada

Call<ResponseBody> dataCall = myApi.getMyData();
dataCall.enqueue(new Callback<ResponseBody>() {
    @Override
    public void onResponse(Response<ResponseBody> response) {
        // use response.code, response.headers, etc.
    }

    @Override
    public void onFailure(Throwable t) {
        // handle failure
    }
});

Si usa RxJava, entonces es mejor usar Completable en este caso

Representa un cálculo diferido sin ningún valor, pero solo una indicación de finalización o excepción. La clase sigue un patrón de eventos similar al de Reactive-Streams: onSubscribe (onError | onComplete)?

http://reactivex.io/RxJava/2.x/javadoc/io/reactivex/Completable.html

en la respuesta aceptada:

@GET("/path/to/get")
Observable<Response<Void>> getMyData(/* your args here */);

Si el punto final devuelve un código de respuesta de falla, todavía estará en el onNext y tendrá que comprobar el código de respuesta usted mismo.

Sin embargo, si usa Completable.

@GET("/path/to/get")
Completable getMyData(/* your args here */);

solo tendrás onComplete y onError. si el código de respuesta es exitoso, disparará el onComplete de lo contrario se disparará onError.

Si está usando rxjava, use algo como:

@GET("/path/to/get")
Observable<Response<Void>> getMyData(/* your args here */);
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *