технологии общество

Экстремальное использование OkHttp

Обзорная статья для начинающих сетевиков, чей предыдущий опыт с OkHttp ограничивался:Балуемся с OkHttp и исследуем его возможности🍿🍦🎪🎈Пробежимся по стандартным настройкам, никаких хаковМожем указать кастомный IP, куда польется трафикМожно указать как HTTP, так и SOCKS проксиПо умолчанию берется прокси IP, установленное в системных настройках⁉️ Вопрос на засыпку: если на девайсе подключен VPN (корпоративный, конечно), то на какой IP пойдет трафик?Если у юзера включен и мобильный интернет, и Wi-Fi, через что пойдет трафик?Оказывается, можно указать самому:⁉️ Аккуратно: пользователи могут не обрадоваться расходу мобильного интернетаУ гугл DNS опять устарели сервера и перестали отвечать?

Давайте напишем свой локальный DNS-резолвер:⁉️ Аккуратно: локально зашитые IP имеют свойство устаревать, нужно не забывать о механизме ротацииНе повторяйте ничего из этого в продакшен коде (без присмотра взрослых / без фича флага на откат)В OkHttp запрос выполняется внутри стандартных OkHttp Interceptor-ов:ConnectInterceptor - резолвинг DNS, установка TCP/TLS соединенияCallServerInterceptor - отправляем и принимает хэдеры/body CacheInterceptor - чтение из кэшаRetryAndFollowUpInterceptor - обрабатывает редиректы и ретраиBridgeInterceptor - читает cookie из CookieJarЕсли вам вдруг понадобится выполнять запрос через другой сетевой движок (например, Cronet), можете выкинуть эти стандартные интерсепторы из цепочки и подсунуть своиКрасивый вариант — форкнуть OkHttp и заменить их в RealCallДешевый вариант без форка — подсунуть свои интерсепторы «перед» интерсепторами OkHttp, чтобы стандартные перестали вызываться, и оборвать в нем цепочку:Внутри любого интерсептора можно выполнить другой сетевой запрос:⁉️ Вопрос на засыпку: если выполнить запрос

DMCA