Comment pouvons-nous gérer les différents type de réponse à Rénover 2?

J'ai un webservice qui renvoie une liste de sérialisé MyPOJO objets:

[
  { //JSON MyPOJO },
  { //JSON MyPOJO }
]

soit une erreur de l'objet :

{  
  'error': 'foo', 
  'message':'bar' 
}

À l'aide de retrofit2, comment puis-je récupérer l'erreur ?

Call<List<MyPOJO>> request = ...
request.enqueue(new Callback<List<MyPOJO>>() {
  @Override
  public void onResponse(Response<List<MyPOJO>> response) {
      if (response.isSuccess()) {
          List<MyPOJO> myList = response.body();
          //do something with the list...
      } else {
          //server responded with an error, here is how we are supposed to retrieve it
          ErrorResponse error = ErrorResponse.fromResponseBody(apiService.getRetrofitInstance(), response.errorBody());
          processError(error);
          //but we never get there because GSON deserialization throws an error !
      }
  }

  @Override
  public void onFailure(Throwable t) {
    if(t instanceof IOException){
        //network error 
    }else if(t instanceof IllegalStateException){
        //on server sending an error object we get there
        //how can I retrieve the error object ?
    }else { 
        //default error handling 
    }       
  }
}

Ici est la GSON exception:

java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $

Rénovation instance est créée à l'aide de GsonConverterFactory

Déjà demandé, stackoverflow.com/questions/24279245/...
pour être juste, que la précédente question est posée à propos de de Rénovation 1.. c'est sur de Rénovation 2.

OriginalL'auteur Rémy DAVID | 2016-02-23