TGINSIGHT CHAT
Android Broadcast
@android_broadcast
TechnologiesПодборка новостей и статей для Android разработчиков. Реклама и связь с автором @ab_manager РКН https://abdev.by/rkn_tg_ab#MQRZR
Posts récents
Tag : #okhttp · 2 posts
Publié 26 févr.
⚰️Библиотеки RxIdler и okhttp-idling-resource теперь depreacated Десять лет назад Espresso привнес в тестирование Android одно из своих ключевых понятий – idling resource. Этот механизм ждал, пока приложение выполнит фоновую работу, прежде чем тест мог продолжиться. Square выпустили RxIdler и okhttp-idling-resource для мониторинга RxJava и OkHttp. Сегодня пришло время отправить их в архив. ❌Что не так с idling resource? Idling resource привязывает тесты к внутренней реализации приложения, а не к пользовательскому взаимодействию. Настоящий пользователь не ждет, пока OkHttp станет “idle” – он смотрит на UI. Если кнопка “Продолжить” загорелась зеленым – значит, можно нажимать. 💡Как теперь тестировать ожидания? Google обновил рекомендации, и теперь Compose предлагает встроенные API для ожидания условий. Для View-based интерфейсов можно написать кастомный ViewAction, который зацикливается на проверке условия, пока оно не выполнится. Deprecated статус не значит что библиотеки больше не рабоают. Вы можете их продолжать использовать, они стабильны, но подход больше не рекомендуется к использованию. #android#compose#okhttp#rxjava#тестирование
Publié 20 févr.
Обновление API токена в OkHttp/Retrofit OkHttp поддерживает возможность обновления токена через специальный интерфейс Authenticator, которые срабатывает если API запрос на сервер вернет код 401 Unauthorized class TokenAuthenticator(private val tokenProvider: TokenProvider) : Authenticator { @Throws(IOException::class) override fun authenticate(route: Route?, response: Response): Request? = runBlocking { // Получаем новый токен val newToken = tokenProvider.refreshToken() // Если токен не удалось обновить, возвращаем null if (newToken == null) return null // Сохраняем новый токен tokenProvider.saveToken(newToken) // Создаем новый запрос с обновленным токеном return response.request.newBuilder() .header("Authorization", "Bearer $newToken") .build() } } // Пример API для работы с токеном interface TokenProvider { suspend fun getSavedToken(): String? suspend fun saveToken(newToken: String) suspend fun refreshToken(token: String?): String? } Добавление Authenticator в OkHttp fun createOkHttpClient(tokenProvider: TokenProvider): OkHttpClient { return OkHttpClient.Builder() .authenticator(TokenAuthenticator(tokenProvider)) .build() } Я часто сталкивался с тем, что реализация бэкенда возвращает отличный HTTP код и тогда уже приходится делать решение через Interceptor. Делитесь в комментариях как вы пишите логике по обновлению токенов. #okhttp#сеть#лучшиепрактики
Hashtags