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 Entwicklung interagiert praktisch jede Anwendung mit externen Diensten über HTTP. Ob REST API, Datendownload vom Server oder das Senden von Formularen – die Fähigkeit, mit HTTP-Anfragen zu arbeiten, ist eine unverzichtbare Fähigkeit für Java-Entwickler. In diesem Artikel werden wir uns ansehen, wie man einen HTTP-Client in Java erstellt, sowohl mit Standardmitteln als auch mit beliebten Drittanbieter-Bibliotheken. Sie erfahren, wie Sie GET- und POST-Anfragen korrekt ausführen, Fehler behandeln und Antworten parsen.



1. Klassischer Ansatz: HttpURLConnection



Lange Zeit war die Klasse HttpURLConnection die Standardmethode für die Arbeit mit HTTP in Java. Sie ist Teil des Pakets java.net und erfordert keine Installation zusätzlicher Abhängigkeiten. Betrachten wir ein Beispiel für die Ausführung einer GET-Anfrage:



import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;

public class SimpleHttpClient { public static void main(String[] args) throws Exception { URL url = new URL("https://api.example.com/data"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("Accept", "application/json");

int responseCode = connection.getResponseCode(); System.out.println("Response Code: " + responseCode);

if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String inputLine; StringBuilder response = new StringBuilder();

while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println("Response: " + response.toString()); } else { System.out.println("GET request failed"); } connection.disconnect(); }}


Für eine POST-Anfrage mit JSON-Datenübertragung ist der Code etwas komplexer:



import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.URL;

public class PostExample { public static void main(String[] args) throws Exception { URL url = new URL("https://api.example.com/users"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/json"); connection.setDoOutput(true);

String jsonInput = "{\\"name\\":\\"John\\",\\"email\\":\\"john@example.com\\"}";

try (OutputStream os = connection.getOutputStream()) { byte[] input = jsonInput.getBytes("utf-8"); os.write(input, 0, input.length); }

int responseCode = connection.getResponseCode(); System.out.println("POST Response Code: " + responseCode);

if (responseCode == HttpURLConnection.HTTP_CREATED) { // Lesen der Antwort analog zu GET } connection.disconnect(); }}


Vorteile von HttpURLConnection:

  • Erfordert keine zusätzlichen Bibliotheken
  • Volle Kontrolle über die Anfrage
  • Unterstützung aller HTTP-Methoden


Nachteile:

  • Ausführliche und umständliche API
  • Schwierige Fehlerbehandlung
  • Keine integrierte Unterstützung moderner Protokolle (HTTP/2)


2. Moderner Standard: HttpClient (Java 11+)



Ab Java 11 wurde der Standardbibliothek ein neuer java.net.http.HttpClient hinzugefügt. Er bietet eine moderne, asynchrone und wesentlich bequemere API. So sieht eine GET-Anfrage damit aus:



import java.net.URI;import java.net.http.HttpClient;import java.net.ht                

Blogs

Buchempfehlungen