android - solucion - Retrofit 2 manejo de errores de llamadas sincrónicas para errores 4xx
numero de error web (1)
Estoy usando un android-priority-jobqueue y uso la modificación para hacer llamadas sincrónicas a mi API de reposo, pero no estoy seguro de cómo manejar errores como 401 Errores no autorizados que envié de vuelta json que indica el error. Simple al hacer llamadas asíncronas, pero estoy adaptando mi aplicación para el administrador de trabajos. a continuación se muestra una captura de prueba simple para excepciones IO, pero 401''s 422, etc. ¿Como hacer esto?
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
}
EDITAR
El uso del objeto de respuesta de adaptación fue el factor decisivo para mí, devolviendo el objeto de respuesta de adaptación que me permitió
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);
}
Verifique el código de respuesta y muestre el mensaje apropiado.
Prueba esto:
PostService postService = ServiceGenerator.createService(PostService.class);
final Call<Post> call = postService.addPost(post);
Response<Post> newPostResponse = call.execute();
// Here call newPostResponse.code() to get response code
int statusCode = newPostResponse.code();
if(statusCode == 200)
Post newPost = newPostResponse.body();
else if(statusCode == 401)
// Do some thing...