См. веб-сайт проекта для получения документации и API.
HTTP — это способ подключения современных приложений к сети. Так мы обмениваемся данными и медиа. Эффективное использование HTTP ускоряет загрузку ваших данных и экономит полосу пропускания.
OkHttp — это HTTP-клиент, который эффективен по умолчанию:
OkHttp продолжает работать, когда с сетью возникают проблемы: он автоматически восстанавливается после распространенных проблем с подключением. Если у вашей службы несколько IP-адресов, OkHttp попытается использовать альтернативные адреса в случае сбоя первого подключения. Это необходимо для IPv4+IPv6 и сервисов, размещенных в резервных центрах обработки данных. OkHttp поддерживает современные функции TLS (TLS 1.3, ALPN, закрепление сертификата). Его можно настроить на резервное обеспечение широкого подключения.
Использовать OkHttp легко. Его API запросов/ответов разработан с использованием гибких конструкторов и неизменяемости. Он поддерживает как синхронные блокирующие вызовы, так и асинхронные вызовы с обратными вызовами.
OkHttp соответствует современным спецификациям HTTP, таким как
Там, где спецификация неоднозначна, OkHttp следует современным пользовательским агентам, таким как популярные браузеры или распространенные библиотеки HTTP.
OkHttp принципиален и избегает чрезмерной настройки, особенно когда такая конфигурация предназначена для обхода сервера с ошибками, тестирования недопустимых сценариев или противоречащих соответствующему RFC. Существуют другие библиотеки HTTP, которые заполняют этот пробел, обеспечивая обширную настройку, включая потенциально недействительные запросы.
Пример ограничений
Эта программа загружает URL-адрес и печатает его содержимое в виде строки. Полный исходник.
OkHttpClient client = new OkHttpClient ();
String run ( String url ) throws IOException {
Request request = new Request . Builder ()
. url ( url )
. build ();
try ( Response response = client . newCall ( request ). execute ()) {
return response . body (). string ();
}
}
Эта программа отправляет данные в службу. Полный исходник.
public static final MediaType JSON = MediaType . get ( "application/json" );
OkHttpClient client = new OkHttpClient ();
String post ( String url , String json ) throws IOException {
RequestBody body = RequestBody . create ( json , JSON );
Request request = new Request . Builder ()
. url ( url )
. post ( body )
. build ();
try ( Response response = client . newCall ( request ). execute ()) {
return response . body (). string ();
}
}
Дополнительные примеры можно найти на странице рецептов OkHttp.
OkHttp работает на Android 5.0+ (уровень API 21+) и Java 8+.
OkHttp зависит от Okio для высокопроизводительного ввода-вывода и стандартной библиотеки Kotlin. Обе небольшие библиотеки с сильной обратной совместимостью.
Мы настоятельно рекомендуем вам регулярно обновлять OkHttp. Как и в случае с автоматическим обновлением веб-браузеров, поддержание актуальности клиентов HTTPS является важной защитой от потенциальных проблем безопасности. Мы отслеживаем динамическую экосистему TLS и настраиваем OkHttp для улучшения подключения и безопасности.
OkHttp использует встроенную реализацию TLS вашей платформы. На платформах Java OkHttp также поддерживает Conscrypt, который интегрирует BoringSSL с Java. OkHttp будет использовать Conscrypt, если он является первым поставщиком безопасности:
Security . insertProviderAt ( Conscrypt . newProvider (), 1 );
Ветка OkHttp 3.12.x
поддерживает Android 2.3+ (уровень API 9+) и Java 7+. Эти платформы не поддерживают TLS 1.2, и их не следует использовать.
В нашем журнале изменений есть история выпусков.
Последний выпуск доступен на Maven Central.
implementation( " com.squareup.okhttp3:okhttp:4.12.0 " )
Доступны моментальные сборки. Доступны правила R8 и ProGuard.
Кроме того, у нас есть спецификация, которая поможет вам поддерживать актуальность артефактов OkHttp и быть уверенными в совместимости версий.
dependencies {
// define a BOM and its version
implementation(platform( " com.squareup.okhttp3:okhttp-bom:4.12.0 " ))
// define any required OkHttp artifacts without version
implementation( " com.squareup.okhttp3:okhttp " )
implementation( " com.squareup.okhttp3:logging-interceptor " )
}
OkHttp включает библиотеку для тестирования клиентов HTTP, HTTPS и HTTP/2.
Последний выпуск доступен на Maven Central.
testImplementation( " com.squareup.okhttp3:mockwebserver:4.12.0 " )
MockWebServer используется в первую очередь для внутреннего тестирования, а также для базового тестирования приложений с использованием клиента OkHttp. Это не полнофункциональная библиотека тестирования HTTP, разработанная отдельно. Он не разрабатывается активно для новых функций. Таким образом, вы можете обнаружить, что ваши потребности переросли MockWebServer, и вы можете использовать более полнофункциональную библиотеку тестирования, такую как MockServer.
Создание собственных изображений с помощью Graal https://www.graalvm.org/ должно работать автоматически. В настоящее время это не финальная версия, поэтому следует использовать версию 5.0.0-alpha.2
. Пожалуйста, сообщайте о любых найденных ошибках или обходных путях.
См. модуль okcurl для примера сборки.
$ ./gradlew okcurl:nativeImage
$ ./okcurl/build/graal/okcurl https://httpbin.org/get
Copyright 2019 Square, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.