Java HTTP客户端:顶级HTTP库推荐

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

HTTP-клиент для Java: лучшие библиотеки для работы с HTTP



Современная Java-разработка практически невозможна без взаимодействия с удаленными серверами по протоколу HTTP. Будь то вызов REST API, загрузка файлов или интеграция с микросервисами — разработчику нужен надежный и удобный HTTP-клиент. В этой статье мы рассмотрим три популярные библиотеки Java: OkHttp, Apache HttpClient и встроенный Java HttpClient (начиная с Java 11). Вы узнаете об их особенностях, увидите примеры кода и поймете, как выбрать подходящую библиотеку для вашего проекта.



1. Java HttpClient (встроенный, Java 11+)



Начиная с Java 11, в стандартной библиотеке появился современный HTTP-клиент, который пришел на смену устаревшему HttpURLConnection. Он поддерживает HTTP/2, WebSocket, асинхронные запросы и реактивные потоки.



Особенности:

  • Не требует дополнительных зависимостей — уже включен в JDK.
  • Поддерживает синхронные (send) и асинхронные (sendAsync) вызовы.
  • Поддерживает HTTP/2 с автоматическим понижением до HTTP/1.1.
  • Встроенная поддержка WebSocket.
  • Удобная работа с телом запроса и ответа через BodyPublishers и BodyHandlers.


Пример: GET-запрос

import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;

public class JavaHttpClientExample { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.github.com/users/octocat")) .GET() .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println("Статус: " + response.statusCode()); System.out.println("Тело ответа: " + response.body()); }}


Пример: асинхронный POST-запрос

import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.util.concurrent.CompletableFuture;

public class AsyncPostExample { public static void main(String[] args) { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://jsonplaceholder.typicode.com/posts")) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString("{\\"title\\":\\"foo\\",\\"body\\":\\"bar\\",\\"userId\\":1}")) .build();

CompletableFuture<HttpResponse<String>> future = client.sendAsync(request, HttpResponse.BodyHandlers.ofString()); future.thenAccept(response -> { System.out.println("Статус: " + response.statusCode()); System.out.println("Ответ: " + response.body()); }).join(); }}





2. OkHttp (Square)



OkHttp — одна из самых популярных библиотек для Android и Java. Она известна своей высокой производительностью, автоматическим управлением соединениями и поддержкой HTTP/2 и SPDY. OkHttp используется внутри Retrofit и Picasso.



Особенности:

  • Поддержка HTTP/2 и автоматическое мультиплексирование запросов.
  • Встроенный пул соединений и повторное использование сокетов.
  • Прозрачная обработка GZip-сжатия.
  • Поддержка перехватчиков (interceptors) для логирования, аутентификации и повторных попыток.
  • Простой и выразительный построитель запросов.


Зависимость (Maven):

<dependency>    <groupId>com.squareup.okhttp3</groupId>    <artifactId>okhttp</artifactId>    <version>4.                    

推荐