Предисловие
Система делает то, что должна. HTTP 400 является ошибкой. Поэтому прохождение через обратные вызовы с ошибками вполне в пределах разумного.
Лучшим решением было бы устранить ошибку .
Возможно, автоматически попытаться получить новый токен доступа с вашим рефре sh токеном. Если это не удается, попросите пользователя снова войти в систему с помощью единого входа.
Потенциальное решение
Если вы абсолютно хотите, чтобы все сообщения об ошибках HTTP 400 направлялись на ваш успешный путь, вы всегда можете изменить ваши запросы сделать это.
Я не проверял следующее, но он должен делать то, что вы хотите.
Перехватчик выполняет вызов. Проверяет код результата звонка. Если этот вызов равен 400, то мы генерируем новый ответ на основе предыдущего ответа. Этот новый ответ изменяется для отправки успешного кода результата.
val okHttpClient = OkHttpClient.Builder()
.addInterceptor {
val response = it.call().execute()
val updatedResponse = if (response.code() == 400) {
response.newBuilder()
.code(200)
.build()
} else {
response
}
updatedResponse
}
...
.build()
val apollo = ApolloClient.builder()
.okHttpClient(okHttpClient)
...
.build()