Какие знаешь сущности HTTP-клиента

«Какие знаешь сущности HTTP-клиента» — вопрос из категории Сети, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Android для работы с HTTP-клиентами используются:

  1. HttpURLConnection – базовый клиент из Java, простой, но требует ручного управления потоками.
    val url = URL("https://api.example.com")
    val connection = url.openConnection() as HttpURLConnection
    connection.requestMethod = "GET"
    val responseCode = connection.responseCode
  1. OkHttp – популярная библиотека от Square с поддержкой HTTP/2, пулом соединений и гибкой настройкой.
    val client = OkHttpClient()
    val request = Request.Builder().url("https://api.example.com").build()
    val response = client.newCall(request).execute()
  1. Retrofit – надстройка над OkHttp для работы с REST API через интерфейсы и автоматическую сериализацию.
    interface ApiService {
        @GET("users")
        suspend fun getUsers(): List<User>
    }
  1. Volley – клиент от Google, удобен для простых запросов, но устарел в пользу OkHttp/Retrofit.

Выбор зависит от задач: Retrofit + OkHttp – для сложных API, HttpURLConnection – для минимализма.