Какие знаешь способы взаимодействия приложения с сервером через сеть

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

Ответ

В Android для сетевого взаимодействия чаще всего используют:

  1. HttpURLConnection - стандартный Java-класс для HTTP-запросов:
URL url = new URL("https://api.example.com/data");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
InputStream inputStream = conn.getInputStream();
  1. OkHttp - популярная библиотека от Square:
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
    .url("https://api.example.com/data")
    .build();
Response response = client.newCall(request).execute();
  1. Retrofit - типобезопасный клиент для REST API:
interface ApiService {
    @GET("data")
    Call<Data> getData();
}

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.example.com/")
    .build();
ApiService service = retrofit.create(ApiService.class);
  1. Volley - HTTP-библиотека от Google для простых запросов

  2. WebSockets - для двусторонней связи в реальном времени

  3. gRPC - для высокопроизводительного RPC

Для всех способов важно выполнять запросы не в основном потоке (используя Coroutines, RxJava или AsyncTask) и обрабатывать ошибки сети.