Retrofit 2 Fehlerbehandlung bei synchronen Aufrufen für 4xx-Fehler
Ich verwende eine Android-Priority-Jobqueue und verwende Retrofit, um synchron zu meiner Ruhe-API zu telefonieren. Ich bin mir jedoch nicht sicher, wie ich mit Fehlern wie 401 Unauthorized Errors umgehen soll, die ich unter Angabe des Fehlers zurücksende. Einfach, wenn Sie asynchrone Anrufe tätigen, aber ich passe meine App für den Job-Manager an. unten ist ein einfacher Versuch Fang für E / A-Ausnahmen, aber 401 422 usw.? Wie macht man das
try {
PostService postService = ServiceGenerator.createService(PostService.class);
final Call<Post> call = postService.addPost(post);
Post newPost = call.execute().body();
// omitted code here
} catch (IOException e) {
// handle error
}
BEARBEITE
Die Verwendung des Retrofit-Antwortobjekts war für mich der entscheidende Faktor. Durch die Rückgabe des Retrofit-Antwortobjekts konnte ich
Response<Post> response = call.execute();
if (response.isSuccessful()) {
// request successful (status code 200, 201)
Post result = response.body();
// publish the post added event
EventBus.getDefault().post(new PostAddedEvent(result));
} else {
// request not successful (like 400,401,403 etc and 5xx)
renderApiError(response);
}