зачем использовать Retrofit, когда у нас есть OkHttp

с OkHttp мы можем сделать HTTP-запрос, а затем получить ответ от сервера

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
  .url(url)
  .build();
Response response = client.newCall(request).execute();

затем с помощью Gson lib конвертировать ответ на требуемый объект.

это от Square/OkHttp doc:

Его API запросов/ответов разработан с плавными строителями и неизменностью. Он поддерживает как синхронные блокирующие вызовы, так и асинхронные вызовы с обратными вызовами

Я читал из qaru.site/info/1629/...

При необходимости дооснащение использует OkHTTP автоматически

,

Итак, мой вопрос - это то, для чего нужно переделать?

что Модернизация может сделать, что OkHttp не может?!

Я думаю, что OkHttp и Gson разрешают проблему API запросов, и какая проблема для нас решает?

Ответ 1

с OkHttp мы можем сделать HTTP-запрос, а затем получить ответ от сервера... затем с помощью Gson lib convert response to object, который нам нужен

Обратите внимание, что в фрагменте кода вы пропустили два важных шага: создание URL-адреса и фактическое разбор JSON с использованием Gson.

Итак, мой вопрос - это то, для чего нужно переделать?

Он предназначен для создания URL-адреса (с использованием генерируемого кодом типа, привязанного к вашему конкретному API REST) и фактически разбора JSON с использованием Gson. Другими словами, он выполняет то, что вы пропустили в своем фрагменте кода.

Кроме того, для определенных типов операций REST (например, POST) это помогает немного собирать то, что нужно отправить (например, генерировать закодированную форму).

По определению вам не нужно использовать "Дооснащение". Модернизация - это компьютерный код, написанный компьютерными программистами. Кто-то другой мог написать код, чтобы сделать то, что делает Retrofit.

почему для переоснащения OkHttp

Для переоснащения необходимо выполнить операции HTTP. Он использует OkHttp, где доступно, для всего, что OkHttp обеспечивает: поддержку HTTP/2 и SPDY, подключаемые перехватчики и т.д.

Ответ 2

Вы должны использовать модификацию, если вы пытаетесь сопоставить API-интерфейс сервера в своем приложении (тип-безопасный). Retrofit - это всего лишь API-адаптер, завернутый поверх okHTTP.

Если вы хотите ввести безопасный и модульный код взаимодействия с вашим API, используйте модификацию. Кроме того, базовая производительность, запросы по умолчанию и т.д. OkHTTP и Retrofit одинаковы.

Также я бы рекомендовал прослушать этот подкаст от Джесси Уилсона (разработчика основных HTTP-клиентов Android), где он подробно рассказывает об истории разработки HTTP-клиента Apache, HTTPURLConnection, okHTTP и Retrofit.

Ответ 3

Дооснащение против OkHttp . Причина проста: OkHttp - это чистый клиент HTTP/SPDY, ответственный за любую работу с низким уровнем сети, кэширование, обработку запросов и ответов и многое другое. Напротив, Retrofit - это высокоуровневая абстракция REST поверх OkHttp. Retrofit 2 сильно связан с OkHttp и интенсивно использует его.

Функции OkHttp: объединение пулов, gzipping, кеширование, восстановление из сетевых проблем, синхронизация и асинхронные вызовы, перенаправления, повторы... и так далее.

Функции дооснащения: манипуляция URL, запрос, загрузка, кеширование, потоковая передача, синхронизация... Он позволяет выполнять синхронизацию и асинхронные вызовы.

Ответ 4

Retrofit - это клиент REST для Android и Java by Square. Это позволяет легко получить и загрузить JSON (или другие структурированные данные) через веб-службу на основе REST. В "Дооснащении" вы настраиваете, какой преобразователь используется для сериализации данных. Обычно для JSON вы используете GSon, но вы можете добавлять собственные преобразователи для обработки XML или других протоколов. Retrofit использует библиотеку OkHttp для HTTP-запросов. Для его удобства вы должны использовать модификацию поверх okhttp.

Ответ 5

Проблема Retrofit решает: коды OKHttp для получения объекта с удаленного сервера являются многословными.