Access Raw Response After Conversion
I've a backend that returns 200 HTTP code even if the request had errors: { 'error': { 'message': 'Generic error', 'code': 13000 } } Now, how can I access
Solution 1:
For error response you have to take response.errorBody() not response.body()
abstractclassAPICallback<T> implementsCallback<T> {
abstractvoidonSuccess(Call<T> call, T result);
@OverridepublicvoidonResponse(Call<T> call, Response<T> response) {
if (response.body() != null) {
if (response.body() instanceofAPIError) {
// this is not working
} else {
onSuccess(call, response.body());
}
} else {
apiError = newAPIError("Unknown error");
bus.post(newAPIErrorEvent(apiError));
}
}
@OverridepublicvoidonFailure(@NonNull Call<T> call, @NonNull Throwable t) {
String message = t.getLocalizedMessage() != null ? t.getLocalizedMessage() : "Unknown error";
apiError = newAPIError(message);
bus.post(newAPIErrorEvent(apiError, source));
}
}
change to
abstractclassAPICallback<T> implementsCallback<T> {
abstractvoidonSuccess(Call<T> call, T result);
@OverridepublicvoidonResponse(Call<T> call, Response<T> response) {
if (response.isSuccessful()) {
if (response.body() != null) {
onSuccess(call, response.body());
}
} else {
if (response.errorBody() != null) {
if (response.errorBody() instanceofAPIError) {
}
} else {
apiError = newAPIError("Unknown error");
bus.post(newAPIErrorEvent(apiError));
}
}
}
@OverridepublicvoidonFailure(@NonNull Call<T> call, @NonNull Throwable t) {
String message = t.getLocalizedMessage() != null ? t.getLocalizedMessage() : "Unknown error";
apiError = newAPIError(message);
bus.post(newAPIErrorEvent(apiError, source));
}
}
Post a Comment for "Access Raw Response After Conversion"