Okhttp для android studio

OkHttp¶

HTTP is the way modern applications network. It’s how we exchange data & media. Doing HTTP efficiently makes your stuff load faster and saves bandwidth.

OkHttp is an HTTP client that’s efficient by default:

  • HTTP/2 support allows all requests to the same host to share a socket.
  • Connection pooling reduces request latency (if HTTP/2 isn’t available).
  • Transparent GZIP shrinks download sizes.
  • Response caching avoids the network completely for repeat requests.

OkHttp perseveres when the network is troublesome: it will silently recover from common connection problems. If your service has multiple IP addresses, OkHttp will attempt alternate addresses if the first connect fails. This is necessary for IPv4+IPv6 and services hosted in redundant data centers. OkHttp supports modern TLS features (TLS 1.3, ALPN, certificate pinning). It can be configured to fall back for broad connectivity.

Using OkHttp is easy. Its request/response API is designed with fluent builders and immutability. It supports both synchronous blocking calls and async calls with callbacks.

Get a URL¶

This program downloads a URL and prints its contents as a string. Full source.

Post to a Server¶

This program posts data to a service. Full source.

Further examples are on the OkHttp Recipes page.

Requirements¶

OkHttp works on Android 5.0+ (API level 21+) and Java 8+.

OkHttp depends on Okio for high-performance I/O and the Kotlin standard library. Both are small libraries with strong backward-compatibility.

We highly recommend you keep OkHttp up-to-date. As with auto-updating web browsers, staying current with HTTPS clients is an important defense against potential security problems. We track the dynamic TLS ecosystem and adjust OkHttp to improve connectivity and security.

OkHttp uses your platform’s built-in TLS implementation. On Java platforms OkHttp also supports Conscrypt, which integrates BoringSSL with Java. OkHttp will use Conscrypt if it is the first security provider:

The OkHttp 3.12.x branch supports Android 2.3+ (API level 9+) and Java 7+. These platforms lack support for TLS 1.2 and should not be used. But because upgrading is difficult, we will backport critical fixes to the 3.12.x branch through December 31, 2021.

Releases¶

Our change log has release history.

The latest release is available on Maven Central.

Snapshot builds are available. R8 and ProGuard rules are available.

Also, we have a bill of materials (BOM) available to help you keep OkHttp artifacts up to date and be sure about version compatibility.

MockWebServer¶

OkHttp includes a library for testing HTTP, HTTPS, and HTTP/2 clients.

The latest release is available on Maven Central.

GraalVM Native Image¶

Building your native images with Graal https://www.graalvm.org/ should work automatically. Please report any bugs or workarounds you find.

See the okcurl module for an example build.

Источник

Русские Блоги

[OkHttp] подробное объяснение расширенной разработки Android (с исходным кодом проекта)

Краткое содержание статьи

1. Введение в OkHttp
2. OkHttp прост в использовании
Три, пакет OkHttp
В-четвертых, загрузка исходного кода проекта

1. Введение в OkHttp

1. Что такое OkHttp

Обычно на платформе Java мы будем использовать Apache HttpClient в качестве Http-клиента для отправки HTTP-запросов и обработки ответов. Например, вы можете использовать http-клиент для интеграции со сторонними службами (такими как службы единого входа), и, конечно же, вы также можете сканировать данные в Интернете. Как и HttpClient, OKHttp также является Http-клиентом, обеспечивая поддержку HTTP / 2 и SPDY, а также функции пула соединений, сжатия GZIP и кэширования ответов HTTP.

Читайте также:  Как посмотреть модель андроид

2. Преимущества OkHttp

(1) Поддержка HTTP2 / SPDY (SPDY — это протокол транспортного уровня на основе TCP, разработанный Google для минимизации сетевой задержки, повышения скорости сети и оптимизации работы пользователей в сети)
(2) Socket автоматически выбирает лучший маршрут и поддерживает автоматическое переподключение, имеет автоматически поддерживаемый пул подключений сокетов, уменьшает количество подтверждений, уменьшает задержку запроса, разделяет Socket и уменьшает сервер Количество запросов
(3) Стратегия кэширования на основе заголовков снижает количество повторяющихся сетевых запросов.
(4) Иметь перехватчики для простой обработки запросов и ответов (автоматическая обработка сжатия GZip)

3. Функция OkHttp

(1) Шаги получения запроса: сначала создайте объект Request, параметр — это как минимум URL-адрес, конечно, вы можете установить дополнительные параметры, такие как заголовок, метод и т. Д., Через Request.Builder.
(2) Затем используйте объект запроса для создания объекта Call, который аналогичен инкапсуляции вашего запроса в задачу. Поскольку это задача, будут выполняться execute () и cancel () И другие методы.
(3) Наконец, мы хотим выполнить запрос асинхронно, поэтому мы вызываем call.enqueue, добавляем вызов в очередь отправки и затем ждем завершения задачи. Мы находимся в обратном вызове Вы можете получить результат.
(4) Параметром обратного вызова onResponse является ответ. Как правило, например, мы хотим получить возвращаемую строку.
можно получить с помощью response.body (). string (); если вы хотите получить возвращаемый двоичный массив байтов, вызовите response.body (). bytes (); если вы хотите получить Для возвращенного inputStream вызовите response.body (). ByteStream ()
(5) Увидев это, вы можете быть удивлены тем, что вы все еще можете получить возвращенный inputStream. По крайней мере, вы можете понять, что когда вы это видите, здесь поддерживаются загрузки больших файлов. У нас есть inputStream. Вы можете писать файлы через IO. Но это также показывает проблему, поток выполнения этого onResponse не является потоком пользовательского интерфейса. Действительно, если вы хотите управлять элементами управления, вам все равно нужно использовать обработчики и т. Д.
(6) okHttp также поддерживает обработку GJson
(7) okhttp поддерживает синхронные и асинхронные запросы, Call call = client.newCall (request); это синхронный запрос, после отправки запроса он перейдет в состояние блокировки, зная, что получен ответный вызов .enqueue (new Callback () — асинхронный запрос
(8) В методе обратного вызова okhttp3.Callback есть параметр Call. Этот вызов может отдельно отменить соответствующий запрос. Вы можете выполнить call.cancel () в методе onFailure или onResponse. . Если вы хотите отменить все запросы, вы можете okhttpclient.dispatcher (). CancelAll ();

Во-вторых, OkHttp прост в использовании

1. Сделайте запрос на получение

2. Сделайте почтовый запрос

3. Загрузите и загрузите изображения.

3. Использование перехватчиков

Что такое перехватчик
Сначала нам нужно понять, что такое перехватчики. Например, конвой шел по небольшой горной дороге с ящиком слитков. Группа бандитов внезапно спустилась с горы и преградила путь конвою. Они очистили конвой и освободили ценности. Бандит эквивалентен перехватчику, а сопровождение эквивалентно сетевому запросу, выполняющему задачу, а параметром в запросе является слиток, который несет эскорт. Перехватчик может изменить и проверить параметры, передаваемые в сетевом запросе, а затем освободить его. Это на самом деле разработало идею программирования АОП (аспектно-ориентированное программирование).
Прежде чем рассказывать о роли и преимуществах перехватчиков, нам все равно нужно вернуться к роли бандита. Если бы вы были бандитом, где бы вы устроили засаду? Это должно быть засада на единственном пути к эскорту. Другими словами, перехватчик должен перехватывать все сетевые запросы, по которым они должны пройти.
(1) Перехватчик может изменять все запросы и возвращать значения одновременно.
(2) Перехватчик может кодировать запрошенные параметры и возвращать результаты за один раз, например, с одинаковым значением UTF-8.
(3) Перехватчик может вести унифицированную запись журнала для всех запросов без добавления операции журнала в начале или в конце каждого запроса.
(4) Другие требования, требующие единой обработки запросов и возвратов .

Классификация перехватчиков в OkHttp
В OkHttp есть два перехватчика: перехват приложения на уровне приложения и перехват сети на уровне сетевого запроса.
(1) Перехватчик приложения должен перехватить запрос в начале выполнения, до того, как будет выполнен основной код OkHttp. Роль перехватчика приложения:
1) Не нужно беспокоиться о том, влияет ли это на стратегию запросов и скорость запросов OKHttp.
2) Даже если данные извлекаются из кеша, перехватчик приложения будет выполняться.
3) Повторная попытка разрешена, то есть Chain.proceed () может выполняться несколько раз. (Конечно, не выполняйте вслепую несколько раз, вам нужно добавить свое логическое суждение)
(2) Перехват сети перед подключением к сети.
1) Вы можете изменить некоторые атрибуты, автоматически добавленные фреймворком OkHttp (конечно, лучше не изменять).
2) Вы можете наблюдать окончательные полные параметры запроса (то есть данные запроса и сведения, полученные конечным сервером)

Читайте также:  Простая инструкция по android

Пункты внимания
Если вы не знакомы с перехватчиками, в процессе разработки рекомендуется использовать Application Interception. Это позволяет избежать разрушения стратегии запросов OkHttp.

Общие практические сценарии
(1) Равномерно зашифруйте параметры запроса.
(2) Перехватить URL-адреса, не соответствующие правилам.
(3) Установите единый метод кодирования для параметров запроса или возврата.
(4) Другое .

Кодекс практики

Три, пакет OkHttp

1. Простая упаковка самостоятельно

2. Android — пакет фреймворка OKHttpUtils

Вступление
OKHttpUtils: структура сетевых запросов, направленная на упрощение сетевых запросов. Для любого сетевого запроса требуется всего одна строка кода. Это первичная и вторичная упаковка OKHttp. Цель упаковки — сделать сетевые запросы более удобными.

OKHttpUtils преимущество
(1) Высокая производительность, использование стандартного протокола okhttp для упаковки
OKHttp Мы знаем, что он поддерживает переподключение http2 и сокета. Автоматически выбирать лучший маршрут и поддерживать пул соединений собственным сокетом. Он может уменьшить количество подтверждений TCP, и он имеет пул потоков очереди для упрощения одновременных запросов.
(2) Уникальный режим сетевого кеширования.
OKHttpUtils недоступен в большинстве сетевых платформ. Например, сетевой руководитель нашей компании требует не только отображать сетевые данные при наличии сети, но и использовать кэшированные данные, когда сети нет. В настоящее время, когда мы используем обычные сетевые запросы, нам нужно много здравого смысла. Независимо от того, есть ли сеть или нет состояния сети, сохраняйте разные данные в соответствии с разными состояниями. Затем решите, использовать ли кеш. Но это обычный способ написания. Итак, OKHttpUtils использует автоматический режим сетевого кэширования. Позвольте пользователям сосредоточиться только на обработке данных.
(3) Удобный и простой в использовании интерфейс расширения.
Вы можете добавлять глобальные общедоступные параметры, глобальные перехватчики, глобальные тайм-ауты и настраивать перехватчики для отдельных запросов. Изменение параметров запроса и так далее.
(4) Эффективная стратегия хранения файлов cookie.
Получить файлы cookie на стороне клиента не так-то просто. Управление файлами cookie осуществляется автоматически на протяжении всего процесса, и предоставляются дополнительные методы управления файлами cookie. Введено дополнительное автоматическое управление. Добавьте все, что вы хотите создать Печенье.

Зависимый импорт пакетов

Сделать запрос на получение

Сделать запрос на публикацию

Используйте okhttp-utils, чтобы запросить одно изображение

Используйте okhttp-utils для загрузки нескольких или отдельных файлов

Обработка обратного вызова

В-четвертых, загрузка исходного кода проекта

Что касается всего учебного содержания okhttp, у нас есть систематизированная система знаний и расширенные видеоматериалы. Друзья, нуждающиеся в помощи, могут присоединиться к группе, чтобы получить бесплатные расширенные видеоуроки по Android, исходный код и материалы для интервью. В группе есть большие коровы, которые можно обсудить вместе технологии;Щелкните ссылку, чтобы присоединиться к групповому чату [Tencent @ AndroidAdvanced Architecture]
(включая настраиваемые элементы управления, NDK, дизайн архитектуры, смешанных инженеров-разработчиков (React native, Weex), оптимизацию производительности, полную разработку коммерческого проекта и т. д.)

Источник

Okhttp для android studio

Android OkHttp Example

May 27, 2017 by Srinivas

Android apps rely on rest services running on server for authentication & authorization, getting and posting data. Since the services on the web run on http protocol, in order to network with servers, android apps need http client. While there are several http client libraries and frameworks including volley which can be used in Android, OkHttp, an Http & Http/2 client, is widely used in android and java applications.

In this article, I am going to explain features of OkHttp and show how to use OkHttp in android to make http get, post, multipart, json and asynchronous request calls with examples.

Читайте также:  Программаторы для андроид смартфонов

OkHttp Supports Http/2

Below are some of the features of http/2

  • Http/2 is a binary protocol which is more efficient compared to text protocol Http.
  • Http/2 supports multiplexing meaning multiple requests and responses can be in flight at the same time on a connection.
  • Http/2 supports header compression leading to reduced network round trips.
  • Http/2 provides improved security.

Features of OkHttp.

OkHttp supports below features which make OkHttp an efficient http client with fast loading and reduced network bandwidth.

  • OkHttp supports Http/2 protocol.
  • Connection pooling can used for http protocol connections.
  • GZIP compression shrinks network data size.
  • Cache eliminates network round trip for repeating requests.
  • OkHttp silently recovers from network problems.
  • If your server is load balanced, OkHttp tries to connect other nodes when it fails to connect one of the nodes in load balancer.
  • OkHttp supports both synchronous and asynchronous calls.
  • You can use OkHttp on Android 2.3 and Java 7 versions onwards.

Add Library to Project

You can add OkHttp library to your project by adding below line to your module gradle property file.

Add Permission to Manifest

As below examples access rest services on server, internet permission is required. Add below permission to manifest xml file.

Android OkHttp Examples

In the below examples, the process of making reset service calls and updating UI with responses is executed in the background thread using AsyncTask. I provided below detailed explanation of each type of http request and complete android OkHttp example code.

Android OkHttp Get Example

Below code shows how to send http get request using OkHttp. To make an http get request call using OkHttp, you need to create Request object by using Request.Builder. Then call newCall method on OkHttpClient object passing the Request object. Finally, call execute() method on Call object to make http get request and receive response.

Above service call returns response in JSON format. Once you get JSON string from response by calling response.body().string(), you can use JSONOjbect or gson for parsing it. If you need more information on how to parse json in android, you can view my previous posts parsing JSON using JSONObject and parsing Json using gson library.

Android OkHttp Get Request With Query String Example

To make http get request call with query parameter using OkHttp, you need to use HttpUrl.Builder and add query parameter to it by calling addQueryParameter on HttpUrl.Builder as shown in below code.

Android OkHttp Post Example

To add post data to Request as key value pairs like data from html forms, you need to use FormBody.Builder, add post parameters to it, and create RequestBody as shown below.

Android OkHttp POST JSON Example

You can post json string to server using OkHttp. To do that, you need to create RequestBody object using create method on RequestBody passing json MediaType and json string as show below.

Android OkHttp Headers Example

You can add headers to request when request object is created or in intercepters by calling addHeader method on Request.Builder object.

Android OkHttp Async Call

In our examples, as UI needs to be updated with response after service call, entire process of making service calls and updating UI is done in the background using AsyncTask. But if you don’t need to use AsyncTask but only want to make http call asynchronously, you can do so by calling enqueue method on Call object passing Callback instead of execute method which makes http call synchronously.

Android OkHttp Multipart Example

To upload files or send multiple parts to http server, you need to send http multipart request. You can create multipart requests in OkHttp by building RequestBody using MultipartBody.Builder shown below. MultipartBody.Builder allows you to add data parts using addFormDataPart method.

Android OkHttp Example Code

Activity

Layout

About

Android app development tutorials and web app development tutorials with programming examples and code samples.

Источник

Оцените статью