Об этом проекте

OkHttp — это библиотека HTTP-клиента для JVM, Android и GraalVM. Согласно её README, она спроектирована так, чтобы по умолчанию быть эффективной: поддержка HTTP/2 позволяет запросам к одному хосту использовать один сокет, пул соединений снижает задержку при отсутствии HTTP/2, прозрачное сжатие GZIP уменьшает размер загрузки, а кэширование ответов исключает обращения к сети для повторяющихся запросов. Библиотека описывается как устойчивая к ненадёжным сетям. Она молча восстанавливается после распространённых проблем с соединением, а при наличии у сервиса нескольких IP-адресов пытается альтернативные адреса при сбое первого подключения, что, как отмечается в README, полезно для IPv4+IPv6 и сервисов в отказоустойчивых ЦОД. Поддерживаются современные функции TLS, включая TLS 1.3, ALPN и привязку сертификатов (certificate pinning), а также возможна настройка отката для широкой совместимости. API использует fluent-билдеры и неизменяемые объекты запроса/ответа, поддерживает как синхронные блокирующие вызовы, так и асинхронные с обратными вызовами. В README приведены краткие примеры загрузки URL и отправки JSON на сервер, а также указана страница рецептов для более подробных примеров. OkHttp следует современным HTTP-спецификациям, включая RFC 9110 (HTTP semantics), RFC 9111 (caching), RFC 9112 (HTTP/1.1), RFC 9113 (HTTP/2), RFC 6455 (WebSockets) и WHATWG server-sent events specification. В случаях неоднозначности спецификаций библиотека следует поведению современных пользовательских агентов. В README указано, что OkHttp намеренно избегает излишней настраиваемости, особенно для обхода ошибок серверов или некорректных сценариев; приведены примеры ограничений, таких как запрет GET с телом и отсутствие возможности подменить реализацию кэша через интерфейс. Требования: Android 5.0+ (API level 21+) и Java 8+. На Android используется AndroidX Startup; если инициализатор отключён в манифесте, приложения должны вызывать OkHttp.initialize(applicationContext) в Application.onCreate. Зависимости: Okio для высокопроизводительного ввода-вывода и стандартная библиотека Kotlin. В README рекомендуется регулярно обновлять OkHttp как меру защиты от уязвимостей, а также отмечается, что библиотека использует встроенную TLS-реализацию платформы, с опциональной поддержкой Conscrypt на платформах Java, если Conscrypt является первым провайдером безопасности. Легаси-ветка 3.12.x поддерживает Android 2.3+ и Java 7+, но эти платформы не имеют TLS 1.2, и их использование не рекомендуется. Распространение осуществляется через Maven Central; доступен BOM (bill of materials) для согласования версий, правила R8/ProGuard и snapshot-сборки. OkHttp публикуется как Kotlin Multiplatform-проект; в Maven-проектах необходимо выбирать между okhttp-jvm и okhttp-android, поскольку артефакт okhttp в Maven-проектах пустой. OkHttp 5.2+ реализует модули Java 9; в README перечислены стабильные публичные модули, включая okhttp3, okhttp3.brotli, okhttp3.coroutines, okhttp3.dnsoverhttps, okhttp3.logging, okhttp3.sse, okhttp3.tls, okhttp3.urlconnection, mockwebserver3 и его варианты для JUnit 4/5. MockWebServer включён для тестирования HTTP, HTTPS и HTTP/2 клиентов. В README он описывается как инструмент, в основном используемый для внутренней разработки и базового тестирования приложений с OkHttp, а не как полноценная standalone-библиотека для тестирования HTTP; отмечается, что новых функций активно не добавляется, и пользователи могут рассмотреть альтернативы, такие как MockServer. Сообщается, что сборки GraalVM native image работают автоматически, в качестве примера приведён модуль okcurl. Проект лицензирован под Apache License 2.0, авторские права принадлежат Square, Inc.