с OkHttp мы можем сделать HTTP-запрос, а затем получить ответ от сервера
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
затем с помощью Gson lib конвертируем ответ в нужный нам объект.
это из документа Square / OkHttp:
Его API запроса / ответа разработан с использованием удобных конструкторов и неизменяемости. Он поддерживает как синхронные блокирующие вызовы, так и асинхронные вызовы с обратными вызовами.
Я читаю из stackOverFlow
При модернизации автоматически используется OkHTTP, если он доступен
.
Итак, мой вопрос: для чего именно нужна модернизация?
что Retrofit может сделать то, что OkHttp не может ?!
Я думаю, что OkHttp и Gson решают проблему API запросов, так какую проблему решает для нас Retrofit?
Call
шаблона OkHttp, перехватчика OkHttp, закрепления сертификатов и т. Д.Ответы:
Обратите внимание, что в своем фрагменте кода вы пропустили два важных шага: создание URL-адреса и фактический анализ JSON с помощью Gson.
Он предназначен для создания URL-адреса (с использованием сгенерированного кода с поддержкой типов, привязанного к вашему конкретному REST API) и фактического анализа JSON с помощью Gson. Другими словами, он делает то, что вы пропустили во фрагменте кода.
Кроме того, для некоторых типов операций REST (например, POST) это немного помогает в сборке того, что нужно отправить (например, создание закодированной формы).
По определению, вам не нужно использовать дооснащение. Модернизация - это компьютерный код, написанный программистами. Кто-то другой мог бы написать код, чтобы делать то, что делает Retrofit.
Требуется модернизация для выполнения операций HTTP. Он использует OkHttp там, где это возможно, для всего, что предоставляет OkHttp: поддержка HTTP / 2 и SPDY, подключаемые перехватчики и т. Д.
источник
Вам следует использовать модернизацию, если вы пытаетесь сопоставить API-интерфейс вашего сервера внутри своего приложения (сохранение типов). Retrofit - это просто адаптер API, обернутый поверх okHTTP.
Если вы хотите ввести безопасный тип и модульность кода взаимодействия с вашим API, используйте модернизацию. Помимо этого, базовая производительность, параметры запроса по умолчанию и т. Д. OkHTTP и Retrofit одинаковы.
Также я бы рекомендовал послушать этот подкаст от Джесси Уилсона (разработчика основных HTTP-клиентов для Android), в котором он подробно рассказывает об истории разработки HTTP-клиента Apache, HTTPURLConnection, okHTTP и Retrofit.
источник
Модернизация против OkHttp Причина проста : OkHttp - это чистый клиент HTTP / SPDY, отвечающий за любые низкоуровневые сетевые операции, кэширование, манипуляции с запросами и ответами и многое другое. Напротив, Retrofit - это высокоуровневая абстракция REST, построенная на основе OkHttp. Retrofit 2 тесно связан с OkHttp и интенсивно его использует.
Функции OkHttp: объединение соединений, сжатие, кэширование, восстановление после сетевых проблем, синхронизация и асинхронные вызовы, перенаправления, повторные попытки… и так далее.
Функции дооснащения: манипулирование URL-адресами, запрос, загрузка, кеширование, потоки, синхронизация ... Это позволяет синхронизировать и асинхронные вызовы.
источник
Retrofit - это клиент REST для Android и Java от Square. Это позволяет относительно легко получать и загружать JSON (или другие структурированные данные) через веб-службу на основе REST. В Retrofit вы настраиваете, какой преобразователь будет использоваться для сериализации данных. Обычно для JSON вы используете GSon, но вы можете добавить собственные конвертеры для обработки XML или других протоколов. Retrofit использует библиотеку OkHttp для HTTP-запросов. Вы должны использовать retrofit вместо okhttp из-за его простоты и возможностей.
источник