I\'m using Retrofit 2.0.0-beta1.
In tests i have an alternate scenario and expect error HTTP 400
I would like to have retrofit.Respons
In Retrofit 2.0 beta2 this is the way that I'm getting error responses:
Synchronous
try {
Call call = backendServiceApi.register(data.in.account, data.in.password,
data.in.email);
Response response = call.execute();
if (response != null && !response.isSuccess() && response.errorBody() != null) {
Converter errorConverter =
MyApplication.getRestClient().getRetrofitInstance().responseConverter(BasicResponse.class, new Annotation[0]);
BasicResponse error = errorConverter.convert(response.errorBody());
//DO ERROR HANDLING HERE
return;
}
RegistrationResponse registrationResponse = response.body();
//DO SUCCESS HANDLING HERE
} catch (IOException e) {
//DO NETWORK ERROR HANDLING HERE
}
Asynchronous
Call call = service.loadRepo();
call.enqueue(new Callback() {
@Override
public void onResponse(Response response, Retrofit retrofit) {
if (response != null && !response.isSuccess() && response.errorBody() != null) {
Converter errorConverter =
retrofit.responseConverter(BasicResponse.class, new Annotation[0]);
BasicResponse error = errorConverter.convert(response.errorBody());
//DO ERROR HANDLING HERE
return;
}
RegistrationResponse registrationResponse = response.body();
//DO SUCCESS HANDLING HERE
}
@Override
public void onFailure(Throwable t) {
//DO NETWORK ERROR HANDLING HERE
}
});
Update for Retrofit 2 beta3:
Asynchronous - Retrofit parameter was removed from onResponse
Call call = service.loadRepo();
call.enqueue(new Callback() {
@Override
public void onResponse(Response response) {
if (response != null && !response.isSuccess() && response.errorBody() != null) {
Converter errorConverter =
MyApplication.getRestClient().getRetrofitInstance().responseConverter(BasicResponse.class, new Annotation[0]);
BasicResponse error = errorConverter.convert(response.errorBody());
//DO ERROR HANDLING HERE
return;
}
RegistrationResponse registrationResponse = response.body();
//DO SUCCESS HANDLING HERE
}
@Override
public void onFailure(Throwable t) {
//DO NETWORK ERROR HANDLING HERE
}
});