HTTP-Client in Java: Anfragen richtig stellen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

HTTP-Client in Java: Anfragen richtig stellen



In der modernen Webentwicklung kommt kaum eine Anwendung ohne Interaktion mit entfernten Servern aus. Ob Integration mit REST API, Datendownload oder Formularversand – die Fähigkeit, korrekt mit HTTP-Anfragen in Java zu arbeiten, ist eine zwingende Fähigkeit für Entwickler. In diesem Artikel werden wir untersuchen, wie man einen zuverlässigen HTTP-Client in Java erstellt, moderne Ansätze und Best Practices betrachten.



Warum ist die Verwendung des richtigen HTTP-Clients wichtig?



Viele Anfänger verwenden die veraltete Klasse HttpURLConnection, die bereits in Java 1.1 eingeführt wurde. Obwohl sie funktioniert, ist ihre API umständlich, unbequem und erfordert viel Boilerplate-Code. Ab Java 11 bietet die Standardbibliothek den modernen java.net.http.HttpClient, der Folgendes bietet:

  • Unterstützung von HTTP/2 und WebSocket
  • Asynchrone Anfragen über CompletableFuture
  • Einfaches und verständliches Builder-Pattern
  • Automatische Verarbeitung von Cookies und Weiterleitungen


Grundlagen der Arbeit mit HttpClient in Java 11+



Betrachten wir ein grundlegendes Beispiel für das Senden einer GET-Anfrage. Zuerst erstellen wir eine Client-Instanz, dann bilden wir die Anfrage und senden sie ab.



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

public class SimpleHttpClient { public static void main(String[] args) throws Exception { // Erstellen eines Clients mit Verbindungs-Timeout HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .build();

// Bilden einer GET-Anfrage HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.example.com/data")) .timeout(Duration.ofSeconds(30)) .header("Accept", "application/json") .GET() .build();

// Senden der Anfrage und Empfangen der Antwort HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

System.out.println("Status: " + response.statusCode()); System.out.println("Antwortkörper: " + response.body()); }}


Beachten Sie die Verwendung von BodyHandlers.ofString() – dies ist eine bequeme Methode, um den Antwortkörper als String zu erhalten. Wenn Sie JSON verarbeiten müssen, verwenden Sie besser BodyHandlers.ofInputStream() und übergeben Sie es an einen Parser.



Senden einer POST-Anfrage mit Körper



Zum Senden von Daten an den Server (z. B. bei der Benutzerregistrierung) wird eine POST-Anfrage verwendet. Betrachten wir ein Beispiel mit dem Senden von JSON:



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

public class PostRequestExample { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newHttpClient();

String json = """ { "name": "Ivan Ivanov", "email": "ivan@example.com", "age": 30 } """;

HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.example.com/users")) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(json)) .timeout(Duration.ofSeconds(15)) .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

if (response.statusCode() == 201) { System.out.println("Benutzer erfolgreich erstellt!"); System.out.println("ID: " + response.body()); } else { System

Blogs

Buchempfehlungen