Retrofit getBodyAs () no puede analizar el error del servidor
Estoy tratando de analizar el mensaje del servidor que se envía cuando algo salió mal. El mensaje se envía en JSON:
{ "Message" : "readable reason", "Id" : 0, // reason code }
Clase de modelo para error:
- Retrofit de devolución de llamada en el hilo principal
- ¿Necesita ayuda en el archivo de imagen múltiple POST usando retrofit?
- Formulario Retrofit Codificado y Multipart en solicitud individual
- No puedo enviar retrofit 2.0 solicitud de varias partes con parámetros con las mismas claves
- Cómo obtener archivos xml gziped con retrofit?
public class RetrofitError { private String message; private int id; }
El retrofit se crea con este código:
RestAdapter.Builder builder = new RestAdapter.Builder(); builder.setLog(new AndroidLog(LOG_TAG)); builder.setLogLevel(LogLevel.FULL); builder.setEndpoint(Constants.getUrl()); builder.setRequestInterceptor(requestInterceptor); GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES); gsonBuilder.setPrettyPrinting(); Gson gson = gsonBuilder.create(); builder.setConverter(new GsonConverter(gson)); RestAdapter restAdapter = builder.build();
Y el error de recuperación:
RetrofitError error = (RetrofitError)retrofitError.getBodyAs(RetrofitError.class)
Funciona sin excepciones, por lo que parece que estoy haciendo algo como lo correcto. Pero constantemente falla en analizar ambos campos en la respuesta. Retrofit se crea una sola vez y recupera y analiza todas las respuestas del servidor con excepción de un error.
Estoy usando el último tarro de retrofit disponible – 1.4.1
¿Qué estoy haciendo mal?
- Retrofit - Múltiples puntos finales con el mismo RestAdapter
- Reemplazos de reemplazo: reemplazo en toda la ruta (incluyendo /)
- Reintentar la solicitud utilizando Retrofit 2
- ¿Cómo debo manejar "No hay conexión a Internet" con Retrofit en Android
- Uso de Retrofit en Android
- Fuera de memoria usando Retrofit 2 para descargar un archivo
- Retrofit 2.0 beta1: cómo publicar cuerpo de cuerda cruda
- RestAdapter (retrofit) no se resuelve en android
Trate de hacer esto si sigue enfrentando este problema. Sé que esta es una pregunta muy antigua pero podría ayudar a otros.
if (restError != null) failure(restError); else { failure(new RestError(error.getMessage())); }
- ¿Es posible obtener referencia a ListView de Adapter en Android?
- Implementar Firebase dentro de una biblioteca