HTTP-Client für Java: Top-Bibliotheken für die Arbeit mit HTTP
Moderne Java-Entwicklung kommt selten ohne die Interaktion mit entfernten Servern über das HTTP-Protokoll aus. Ob es sich um den Aufruf einer REST-API, das Hochladen von Dateien oder die Integration mit Microservices handelt – der Entwickler benötigt einen zuverlässigen und benutzerfreundlichen HTTP-Client. In diesem Artikel betrachten wir drei führende Bibliotheken für Java: OkHttp, Apache HttpClient und den integrierten Java HttpClient (ab Java 11). Sie erfahren deren Besonderheiten, sehen Codebeispiele und verstehen, welche Bibliothek Sie für Ihr Projekt wählen sollten.
1. Java HttpClient (integriert, Java 11+)
Ab Java 11 ist in der Standardbibliothek ein moderner HTTP-Client enthalten, der den veralteten HttpURLConnection ersetzt. Er unterstützt HTTP/2, WebSocket, asynchrone Anfragen und reaktive Streams.
Besonderheiten:
- Erfordert keine zusätzlichen Abhängigkeiten – ist im JDK enthalten.
- Unterstützung für synchrone (
send) und asynchrone (sendAsync) Aufrufe. - Arbeit mit HTTP/2 und automatisches Herabstufen auf HTTP/1.1.
- Integrierte Unterstützung für WebSocket.
- Komfortable Arbeit mit dem Anforderungskörper über
BodyPublishersund der Antwort überBodyHandlers.
Beispiel: GET-Anfrage
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("Status: " + response.statusCode()); System.out.println("Body: " + response.body()); }}Beispiel: asynchrone POST-Anfrage
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("Status: " + response.statusCode()); System.out.println("Antwort: " + response.body()); }).join(); }}2. OkHttp (Square)
OkHttp ist eine der beliebtesten Bibliotheken für Android und Java. Sie zeichnet sich durch hohe Leistung, automatische Verbindungsverwaltung und Unterstützung für HTTP/2 und SPDY aus. OkHttp wird intern von Retrofit und Picasso verwendet.
Besonderheiten:
- Unterstützung für HTTP/2 und automatisches Multiplexing von Anfragen.
- Integrierter Verbindungspool und Wiederverwendung von Sockets.
- Transparente Handhabung der GZip-Komprimierung.
- Unterstützung von Interceptors für Logging, Authentifizierung und Wiederholungsversuche.
- Einfache und fluent-ähnliche Anfrage-Builder.
Einbindung (Maven):
<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4. Auch in der Bibliothek
Datenvalidierung in Rust: Die Bibliothek validator
Testen in JavaScript (Node.js): Frameworks und Werkzeuge
Arbeiten mit Excel in Go (Golang): Bibliotheken, Beispiele und Werkzeuge
Spectre.Console für C# (.NET): Komplettes Tutorial mit Beispielen
Arbeiten mit Excel in Go (Golang): Bibliotheken Excelize, xlsx, tealeg