Как получить тело ошибки, отправленное с сервера с помощью аутентификатора дооснащения в Android

#android #retrofit #retrofit2 #authenticator

Вопрос:

Я использую модернизацию для вызовов API в одном из проектов Android. Я хочу прочитать сообщение об ошибке, отправленное с серверной части для любого API, когда срок действия токена истечет. Когда срок действия токена истекает, OkHttpClient.authenticator вызывается с объектом ответа. В этом аутентификаторе я должен прочитать сообщение об ошибке, отправленное с моего бэкенда, чтобы отличить ошибки. Но я не вижу никакого способа прочитать сообщение об ошибке, отправленное с сервера из объекта ответа. У кого-нибудь есть идеи, как это прочесть?

Ответ №1:

Вы можете взять тело несанкционированного ответа из переменной ответа параметра функции аутентификации.

 override fun authenticate(route: Route?, response: Response): Request? {
    val unAuthMessage = response.body?.string()
    //Your code...

}
 

В моей ситуации мое тело-это просто строка, но если ваше сообщение-json, вы можете преобразовать его в объект json.