- Русские Блоги
- Основное использование — OkHttp3 подробное руководство по использованию
- очертание
- Внешний вид фона
- Решения
- OkHttp3 дизайнерские идеи
- 2. Учебное пособие
- 2.1, GRADLE ознакомительный пакет
- 2.2, создайте экземпляр OkHttpClient
- 2.3、GET
- Request
- Сделать запрос
- Response
- 2.4、POST
- 2.4.1, строка отправки POST
- 2.4.2, POST представить пары ключ-значение
- 2.4.3, Поток после отправки
- 2.4.4, Отправка формы сообщения
- 2.4.5 Подать запрос на блокировку в режиме Post, вы можете загружать файлы
- 2.5, настройка и чтение HTTP-заголовка
- 2.6, синхронный и асинхронный
- Синхронное получение
- Асинхронное получение
- Русские Блоги
- Базовое использование Android OkHttp
- 1. Получить запрос
- Два, тип сообщения
- Три, пара «ключ-значение» для публикации
- Четыре, строка сообщения
- Пять, форма сообщения
- Шесть, почтовый поток
- Семь, Отправить файл
- 8. Скачать картинки
- Интеллектуальная рекомендация
- Многослойная презентацияViewController Jap
- Распечатать список с конца до головы
- Типы данных и переменные
- Python Daily Practice (4) -идиомы заполняют музыку
- OkHttp¶
- Get a URL¶
- Post to a Server¶
- Requirements¶
- Releases¶
- MockWebServer¶
- GraalVM Native Image¶
Русские Блоги
Основное использование — OkHttp3 подробное руководство по использованию
очертание
OkHttp следует рассматривать как самую горячую стороннюю библиотеку Http сейчас. Нижний слой Retrofit также использует OkHttp. Многие онлайн-уроки написаны хорошо, но я думаю, что некоторые важные знания в основном взяты за один раз, поэтому я решил написать статью
Внешний вид фона
Можно сказать, что требование к эффективности доступа к сети рождено для эффективности
Решения
- ОбеспечиваетHTTP / 2 и SPDYПоддержка, которая позволяет всем запросам к одному хосту использовать одно и то же сокетное соединение
- еслиHTTP / 2 и SPDYНедоступно, OkHttp будет использовать пул соединений для повторного использования соединений для повышения эффективности
- ОбеспечиваетGZIPПоддержка по умолчанию для уменьшения размера передаваемого контента
- ОбеспечиваетМеханизм кэширования ответов HTTPЧтобы избежать ненужных сетевых запросов
- Когда есть проблема с сетью, OkHttp будетАвтоматически повторить несколько IP-адресов для хоста
OkHttp3 дизайнерские идеи
Каждый HTTP-запрос должен содержать URL-адрес, метод GET или POST и заголовок или другие параметры, конечно, он также может содержать поток данных определенного типа содержимого.
Ответ содержит код ответа (200 для успеха, 404 для не найден), заголовок и настраиваемое тело.
2. Учебное пособие
2.1, GRADLE ознакомительный пакет
2.2, создайте экземпляр OkHttpClient
Проще говоря, вы можете отправить Http-запрос через OkHttpClient и прочитать ответ Http-запроса. Это фабрика, которая производит Calls.
Кроме того, большинство приложений используют экземпляр OkHttpClient, который может удовлетворить запрос Http всего приложения, используя преимущества общего кэша ответов / пула потоков / мультиплексного соединения и других факторов.
Три метода для создания экземпляров:
- Создайте конфигурацию по умолчанию OkHttpClient, вы можете использовать конструктор по умолчанию.
- Используйте новый метод OkHttpClient.Builder () для пошаговой настройки OkHttpClient.
- Если вам нужно использовать существующий экземпляр, вы можете использовать метод newBuilder () для создания.
Глядя на исходный код OkHttpClient, вы обнаружите, что кеш / прокси и другие требования инкапсулированы в Builder в соответствии с классом.
2.3、GET
Request
Краткий взгляд на класс Request показывает, что он представляет запрос Http, и следует отметить, что после того, как запрос создан (), он не может быть изменен.
Главным образом построен шаг за шагом через новый Request.Builder (). Взгляните на код Builder.
По умолчанию используется метод Get,
Кроме того, была создана информация заголовка. Класс заголовков пройден List namesAndValues = new ArrayList<>(20) Чтобы сохранить информацию заголовка, я также был озадачен в начале. Информация заголовка является однозначной. Зачем использовать List? Посмотрите на исходный код и обнаружите, что индекс равен +2 или -2 во время доступа. И информация заголовка может существовать несколько одинаковых данных ключа.
Сделать запрос
После обнаружения в методе newCall () экземпляр RealCall был создан с использованием экземпляра OkHttpClient и экземпляра Request.
Класс RealCall просто делает хостинг, распределяет и выполняет запрос через класс Dispather. Метод фактического запуска потока для инициирования запроса находится в этом классе.
Затем вызывается метод execute () и получается ответ. Метод execute () фактически выполняет метод execute () в RealCall и, наконец, вызывает метод execute () Dispatcher.
Response
Ответ представляет собой ответ Http. Экземпляры этого класса не могут быть изменены.
Простой запрос на получение и инструкции завершены
2.4、POST
2.4.1, строка отправки POST
MediaType Используется для описания типа контента Http-запроса и тела ответа, то есть Content-Type 。
Один запрос — отправить строку текста на целевой сервер. Что за текст? Есть тексты со следующей структурой.
Структура пакета HTTP-запроса (картинка изПроцесс запроса сети Android)
Например, MediaType.parse («application / json; charset = utf-8»); тип тела запроса в этой таблице в формате JSON.
Определите тип данных, а затем включите его в тело запроса и, наконец, отправьте его вместе с запросом через метод post ().
2.4.2, POST представить пары ключ-значение
OkHttp также может передавать данные значения ключа на сервер через POST
2.4.3, Поток после отправки
POST тело запроса в потоковом режиме. Содержимое тела запроса генерируется потоковым. В этом примере поток записывается непосредственно в BufferedSink Okio. Ваша программа может использовать OutputStream, вы можете использовать BufferedSink.outputStream (), чтобы получить его. ,
Перепишите несколько методов в RequestBody, поместите локальные данные в тело запроса протокола Http, а затем отправьте их на сервер.
2.4.4, Отправка формы сообщения
Используйте FormEncodingBuilder, чтобы создать тело запроса с тем же эффектом, что и теги HTML. Пары ключ-значение будут кодироваться с использованием HTML-совместимой формы кодирования URL.
2.4.5 Подать запрос на блокировку в режиме Post, вы можете загружать файлы
MultipartBuilderМожет быть составлено сложное тело запроса, совместимое с формой загрузки HTML-файла.
Каждый запрос в многоблочном теле запроса является телом запроса, и вы можете определить свой собственный заголовок запроса. Эти заголовки запроса могут использоваться для описания этого запроса, например, его Content-Disposition. Если доступны Content-Length и Content-Type, они будут автоматически добавлены в заголовок запроса.
2.5, настройка и чтение HTTP-заголовка
Структура данных заголовка HTTP Map > Введите. То есть для каждого HTTP-заголовка может быть несколько значений. Но большинство заголовков HTTP имеют только одно значение, и только несколько заголовков HTTP допускают несколько значений. Что касается описания значения имени, вы можете проверить этоЗаголовок запроса。
Метод обработки OkHttp:
- Использовать header(name,value) Чтобы установить уникальное значение HTTP-заголовка, если информация ответа уже существует в запросе, то сразу замените его.
- Использовать addHeader(name,value) В дополнение к новому значению, если имя-значение имени уже существует в заголовке запроса, оно будет добавлено далее. В заголовке запроса будет несколько «пар ключ-значение» с тем же именем, но разными значениями.
- Использовать header(name) Прочитать последнее значение уникального значения или нескольких значений
- Использовать headers(name) Получить все значения
2.6, синхронный и асинхронный
Синхронное получение
Загрузите файл, напечатайте его заголовок ответа и напечатайте тело ответа в виде строки.
Метод string () тела ответа очень удобен и эффективен для небольших документов. Но если тело ответа слишком велико (более 1 МБ), вам следует избегать адаптации метода string (), поскольку он загрузит весь документ в память. Для тел ответа, которые превышают 1 МБ, тело должно быть обработано потоковым способом.
Асинхронное получение
Загрузите файл в рабочем потоке и перезвоните интерфейс обратного вызова, когда ответ будет читаемым. Текущий поток заблокирован при чтении ответа. OkHttp не предоставляет асинхронные API на этом этапе для получения тела ответа.
Источник
Русские Блоги
Базовое использование Android OkHttp
Перепечатано:http://www.jianshu.com/p/c478d7a20d03
OkHttp можно назвать одной из самых популярных на сегодняшний день платформ веб-запросов. Сегодня давайте рассмотрим использование OkHttp, включая получение запроса, отправку запроса, загрузку и загрузку файлов, загрузку и загрузку изображений и т. д.
Перед использованием OKHttp вы должны сначала понять следующие основные классы:
- OkHttpClient: клиентский объект
- Запрос: запрос доступа, запрос публикации должен включать RequestBody
- RequestBody: данные запроса, используемые в почтовом запросе
- Ответ: результат ответа на сетевой запрос.
- MediaType: тип данных, используемый для обозначения того, что данные находятся в серии форматов, таких как json, image, pdf и т. Д.
- client.newCall (request) .execute (): метод синхронного запроса
- client.newCall (request) .enqueue (Callback callBack): метод асинхронного запроса, но обратный вызов выполняется в дочернем потоке, поэтому здесь нельзя выполнить операцию обновления пользовательского интерфейса
Перед использованием вам необходимо добавить библиотеку зависимостей OkHttp в проект и добавить следующий оператор в градиент соответствующего модуля
Кроме того, OkHttp внутренне полагается на другую библиотеку с открытым исходным кодом OkIo, поэтому ее необходимо импортировать.
Затем синхронизируйте проект, и адрес OkHttp на GitHub будет:OkHttp
Адрес GitHub OkIo:OkIo
1. Получить запрос
Можно сказать, что наиболее распространенным методом сетевого запроса является получение запроса, здесь для получения содержимого моей личной домашней страницы в Цзяньшу.
Следует отметить, что функция обратного вызова, вызываемая асинхронно, находится в дочернем потоке, поскольку для обновления пользовательского интерфейса требуется Handler или runOnUiThread.
Здесь используется класс инструмента Toast, пользователь определяет, является ли текущий поток основным потоком, если это так, Toast будет всплывать напрямую, в противном случае используйте runOnUiThread для всплывающего Toast
Кроме того, в следующем методе функции обратного вызова
Если вы хотите получить возвращаемую строку, вы можете использовать
Если вам нужен байтовый массив, используйте
Если вам нужен входной поток, используйте
Два, тип сообщения
При отправке тела запроса на сервер с использованием метода Post в OkHttp тело запроса должно быть RequestBody. Тело запроса может быть:
- ключ-значение: тип пары ключ-значение
- Строка: тип строки
- Форма: форма отправки данных, аналогичная Html
- Stream: тип потока
- Файл: Тип файла
Три, пара «ключ-значение» для публикации
Здесь можно отправить два значения параметров на главную страницу веб-сайта Jianshu, а функция имитации входа в систему может быть реализована через Post. Конечно, это просто имитация операции Post.После отправки параметров происходит переход на страницу 404.
в
Вы можете получить код результата целого типа: 404
Четыре, строка сообщения
В приведенном выше примере Post передает пары параметров. Иногда нам нужно передать строку, например, отправив строку JSON на сервер. Тогда вы можете использовать следующий метод:
Пять, форма сообщения
Просматривая исходный код Html страницы входа на веб-сайт, вы обычно можете просмотреть форму входа в следующем формате
MuiltipartBody используется здесь для создания RequestBody, который является подклассом RequestBody, а отправка данных формы осуществляется с использованием этого класса.
Шесть, почтовый поток
Семь, Отправить файл
8. Скачать картинки
После указания адреса изображения и успешной загрузки получите входной поток изображения, сначала используйте метод Bitmap decodeStream (InputStream is), чтобы преобразовать входной поток в Bitmap и отобразить его, а затем сохранить изображение в корневом каталоге локальной карты памяти.
Не забудьте подать заявку на разрешение записи на карту памяти.
Интеллектуальная рекомендация
Многослойная презентацияViewController Jap
. Недавно, проект использует многоэтажные прыжки [A presentViewController: B animated: YES] [B presentViewController: C animated: YES] . Проблема в том, где: как это идет прямо к? Я не нашел ме.
Распечатать список с конца до головы
В случае, когда таблица цепи не может изменять дисплей, данные хранения стека могут рассматриваться с рекурсивным методом. Разрешить модификацию структуры ссылки.
Типы данных и переменные
тип данных Компьютерная программа может обрабатывать различные значения. Однако компьютеры могут обрабатывать гораздо больше, чем числовые значения. Они также могут обрабатывать различные данные, таки.
Python Daily Practice (4) -идиомы заполняют музыку
оглавление 1. Одно место 2. Случайное расположение 3. Добавьте баллы для оценки 4. Получение файла 5. Установите уровень сложности. 6. Срок завершения 7. Выберите заполнение пропусков. 1. Одно место Н.
Источник
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.
Источник