Я создал AuthInterceptor, в котором я проверяю, получаю ли я AUTH_ERROR, тогда мне нужно сгенерировать новый токен и добавить его для запроса заголовка, ниже мой код
val tempSessionId = getStoredToken(
request = request.newBuilder()
.addHeader("Authorization", "Bearer $tempSessionId").build()
val response = chain.proceed(request)
try {
if (response.isSuccessful) {
val body = response.body!!.string() <- Here response will be closed
if (body.contains("status")) {
val jsonObject = JSONObject(body)
val status = jsonObject.optInt("status")
if (status != null && status == 0) {
val errorCode = jsonObject.getJSONObject("data").optString("error_code")
if (errorCode != null) {
addRefreshTokenToRequest(request) <- Generating new token
return chain.proceed(request)
}
}
}
}
} catch (e: Exception) {
e.printStackTrace()
}
return chain.proceed(request) <-How to prevent new request again
}
Если в последнем коде, если Я не вызываю chain.proceed (request) и верну прямой ответ, тогда я получу ошибку InavalidStatus: Close , потому что response.body !!. String () будет закрытие ответа.
Как прочитать ответ без закрытия ответа. Поэтому мне не нужно снова вызывать chain.proceed (запрос) .