Retrofit 2.0 how to get deserialised error response.body

前端 未结 21 2224
庸人自扰
庸人自扰 2020-11-28 02:46

I\'m using Retrofit 2.0.0-beta1.

In tests i have an alternate scenario and expect error HTTP 400

I would like to have retrofit.Respons

21条回答
  •  一整个雨季
    2020-11-28 03:12

    errorBody values should set APIError object in Retrofit. So that, you can use the below code structure.

    public class APIErrorUtils {
    
        public static APIError parseError(Response response) {
            Converter converter = API.getClient().responseBodyConverter(APIError.class, new Annotation[0]);
    
            APIError error;
    
            try {
                error = converter.convert(response.errorBody());
                Log.d("SERVICELOG", "****************************************************");
                Log.d("SERVICELOG", "***** SERVICE LOG");
                Log.d("SERVICELOG", "***** TIMESTAMP: " + String.valueOf(error.getTimestamp()));
                Log.d("SERVICELOG", "***** STATUS: " + String.valueOf(error.getStatus()));
                Log.d("SERVICELOG", "***** ERROR: " + error.getError());
                Log.d("SERVICELOG", "***** MESSAGE: " + error.getMessage());
                Log.d("SERVICELOG", "***** PATH: " + error.getPath());
                Log.d("SERVICELOG", "****************************************************");
            } catch (IOException e) {
                return new APIError();
            }
    
            return error;
        }
    }
    
    APIError error = APIErrorUtils.parseError(response);
    if (error.getStatus() == 400) {
        ....
    }
    

提交回复
热议问题