зачем использовать Ретрофит, когда мы 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 запроса/ответа конструирован с беглыми строителями и неизменность. Он поддерживает как синхронные блокирующие вызовы, так и асинхронные звонки с обратными вызовами

Я читаю от stackOverFlow

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

.

Итак, мой вопрос заключается в том, что именно модифицируется?

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

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

5 56

5 ответов:

С OkHttp мы можем сделать HTTP-запрос, а затем получить ответ от сервера... затем с помощью Gson lib преобразовать ответ на объект нам нужно

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

Итак, мой вопрос заключается в том, что именно модифицируется?

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

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

по определению, вам не нужно использовать Retrofit. Ретрофит-это компьютерный код, написанный программистами. Кто-то другой мог бы написать код, чтобы сделать то, что делает Retrofit.

почему реконструкция OkHttp

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

вы должны использовать retrofit, если вы пытаетесь отобразить API сервера внутри вашего приложения (тип-safing). Retrofit-это просто адаптер API, обернутый поверх okHTTP.

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

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

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

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

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

Модифицированной Функции: обработка URL, запрос, загрузка, кэширование, потоковая передача, синхронизация... Это позволяет синхронизировать и асинхронные вызовы.

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