TGTGInsighttelegram intelligenceLIVE / telegram public index
Retour aux chaînes
Android Broadcast avatar

TGINSIGHT CHAT

Android Broadcast

@android_broadcast

Technologies

Подборка новостей и статей для Android разработчиков. Реклама и связь с автором @ab_manager РКН https://abdev.by/rkn_tg_ab#MQRZR

Abonnés1.4万Abonnés actuels de la chaîne
Posts indexés1,000Nombre de posts indexés
Portée récente13,410Somme des vues récentes
Posts récents

Posts récents

Tag : #okhttp · 2 posts

当前筛选 #okhttp清除筛选

⚰️Библиотеки 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#тестирование

6,550 views

Обновление 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#сеть#лучшиепрактики

6,860 views