tipos solucion respuesta para pagina numero estado erróneo errores error devuelto código codigos codigo android error-handling retrofit2 synchronous

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...