Client HTTP pour Java : top bibliothèques pour travailler avec HTTP
Le développement Java moderne implique rarement de ne pas interagir avec des serveurs distants via le protocole HTTP. Qu'il s'agisse d'appeler une API REST, de télécharger des fichiers ou de s'intégrer à des microservices, le développeur a besoin d'un client HTTP fiable et pratique. Dans cet article, nous examinons trois bibliothèques leaders pour Java : OkHttp, Apache HttpClient et le Java HttpClient intégré (à partir de Java 11). Vous découvrirez leurs caractéristiques, verrez des exemples de code et comprendrez quelle bibliothèque choisir pour votre projet.
1. Java HttpClient (intégré, Java 11+)
Depuis Java 11, la bibliothèque standard inclut un client HTTP moderne qui remplace l'ancien HttpURLConnection. Il prend en charge HTTP/2, WebSocket, les requêtes asynchrones et les flux réactifs.
Caractéristiques :
- Aucune dépendance supplémentaire requise — inclus dans le JDK.
- Prise en charge des appels synchrones (
send) et asynchrones (sendAsync). - Prise en charge de HTTP/2 et rétrogradation automatique vers HTTP/1.1.
- Prise en charge intégrée de WebSocket.
- Gestion pratique du corps de la requête via
BodyPublisherset de la réponse viaBodyHandlers.
Exemple : requête 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("Statut : " + response.statusCode()); System.out.println("Corps : " + response.body()); }}Exemple : requête POST asynchrone
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("Statut : " + response.statusCode()); System.out.println("Réponse : " + response.body()); }).join(); }}2. OkHttp (Square)
OkHttp est l'une des bibliothèques les plus populaires pour Android et Java. Elle est réputée pour ses hautes performances, sa gestion automatique des connexions et sa prise en charge de HTTP/2 et SPDY. OkHttp est utilisé en interne par Retrofit et Picasso.
Caractéristiques :
- Prise en charge de HTTP/2 et multiplexage automatique des requêtes.
- Pool de connexions intégré et réutilisation des sockets.
- Gestion transparente de la compression GZip.
- Prise en charge des intercepteurs (interceptors) pour la journalisation, l'authentification et les tentatives.
- Constructeurs de requêtes simples et de type fluent.
Ajout de la dépendance (Maven) :
<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4. Aussi dans la bibliothèque
Travailler avec Excel en C++ : bibliothèques, exemples et outils
ORM pour Swift (iOS/macOS) : comparaison et exemples d'utilisation
tsyringe pour TypeScript : guide complet avec exemples
Client Elasticsearch pour PHP : elasticsearch-php. Guide complet
Génération de rapports PDF en C# (.NET) avec iTextSharp et QuestPDF