Настройка Retrofit для сетевых запросов в Android-приложении

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Настройка Retrofit для сетевых запросов в Android-приложении
Средняя
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    760
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    646
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1067
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    884
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    452

Настройка Retrofit для сетевых запросов в Android-приложении

Retrofit — де-факто стандарт для работы с REST API в Android. Библиотека превращает HTTP-вызовы в Kotlin suspend-функции или RxJava Observable, берёт на себя сериализацию/десериализацию, и при правильной настройке требует нулевого бойлерплейта для стандартных CRUD-операций.

Что включает настройка

Стандартный стек: Retrofit 2 + OkHttp как HTTP-клиент + kotlinx.serialization или Gson как конвертер. KotlinX Serialization предпочтительнее для Kotlin-проектов: null-safety на уровне JSON-парсинга, поддержка sealed классов, работа без рефлексии (важно для R8-обфускации).

Конфигурация Retrofit:

val retrofit = Retrofit.Builder()
    .baseUrl(BuildConfig.API_BASE_URL)
    .client(okHttpClient)
    .addConverterFactory(Json.asConverterFactory("application/json".toMediaType()))
    .build()

API_BASE_URL — из BuildConfig, не хардкодом в коде. Разные окружения (dev/staging/prod) управляются через productFlavors в Gradle.

Интерфейс API с suspend-функциями:

interface UserApi {
    @GET("users/{id}")
    suspend fun getUser(@Path("id") id: Long): UserResponse

    @POST("users")
    suspend fun createUser(@Body request: CreateUserRequest): UserResponse

    @PUT("users/{id}")
    @Headers("Content-Type: application/json")
    suspend fun updateUser(@Path("id") id: Long, @Body request: UpdateUserRequest): UserResponse
}

Интерсепторы OkHttp

Здесь концентрируется большая часть логики сетевого слоя.

Авторизация: Interceptor, который добавляет Authorization: Bearer {token} к каждому запросу. Токен читается из зашифрованного EncryptedSharedPreferences или DataStore. Если токен протух — 401 от сервера, интерсептор через Authenticator (отдельный интерфейс OkHttp) делает refresh и повторяет запрос. Без Authenticator придётся обрабатывать 401 в каждом UseCase вручную.

Логирование: HttpLoggingInterceptor с BODY level — только в debug-сборке (if (BuildConfig.DEBUG)). В release — NONE. Логировать токены в production — уязвимость.

Retry: кастомный Interceptor с экспоненциальной задержкой для сетевых ошибок (IOException). Серверные ошибки (4xx, 5xx) — не повторяем автоматически, только сетевые.

Timeout: connectTimeout(30, TimeUnit.SECONDS), readTimeout(30, TimeUnit.SECONDS), writeTimeout(30, TimeUnit.SECONDS) на OkHttpClient.Builder. Для файловых загрузок — отдельный клиент с увеличенным writeTimeout.

Обработка ошибок

Suspend-функции Retrofit бросают HttpException при не-2xx статусе и IOException при сетевой ошибке. Оборачиваем в sealed-класс результата:

sealed class ApiResult<out T> {
    data class Success<T>(val data: T) : ApiResult<T>()
    data class Error(val code: Int, val message: String) : ApiResult<Nothing>()
    data object NetworkError : ApiResult<Nothing>()
}

Это позволяет ViewModel работать с типизированными ошибками без try/catch на каждом вызове — логика обёртки в одном месте в NetworkDataSource.

Certificate pinning через CertificatePinner в OkHttpClient — для приложений с повышенными требованиями безопасности (финтех, медицина). Требует обновления при ротации сертификата — этот процесс нужно планировать.

Настройка Retrofit с полным сетевым слоем (авторизация, retry, обработка ошибок, логирование, unit-тесты с MockWebServer) — 1-3 дня. Стоимость рассчитывается индивидуально.