HTTP-Client in Java: Anfragen richtig stellen von A bis Z

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 von A bis Z



In der modernen Java-Entwicklung ist die Interaktion mit externen Webdiensten und REST-APIs ein wesentlicher Bestandteil nahezu jeder Anwendung geworden. Unabhängig davon, ob Sie einen Mikroservice, eine mobile Anwendung oder ein Unternehmenssystem schreiben, ist die Fähigkeit, HTTP-Anfragen korrekt zu senden, eine kritisch wichtige Fähigkeit. In diesem Artikel werden wir alle Möglichkeiten zur Erstellung eines HTTP-Clients in Java behandeln: vom klassischen HttpURLConnection bis zu modernen Bibliotheken wie java.net.http.HttpClient, OkHttp und RestTemplate. Sie erfahren, wie Sie GET-, POST-, PUT- und DELETE-Anfragen durchführen, Antworten verarbeiten und das richtige Werkzeug für Ihre Aufgabe auswählen.



1. Klassischer Ansatz: HttpURLConnection



Über viele Jahre hinweg war die Klasse HttpURLConnection die Standardmethode für die Arbeit mit HTTP in Java. Sie ist Bestandteil des JDK und erfordert keine zusätzlichen Abhängigkeiten. Allerdings gilt ihre API als low-level und umständlich, insbesondere bei komplexen Anfragen.



Beispiel einer GET-Anfrage:

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

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

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

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()); }}


Beispiel einer POST-Anfrage mit JSON:

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 jsonInputString = "{\\"name\\": \\"John\\", \\"age\\": 30}"; try (OutputStream os = connection.getOutputStream()) { byte[] input = jsonInputString.getBytes("utf-8"); os.write(input, 0, input.length); }

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


Vorteile: im JDK integriert, keine Bibliotheken erforderlich.
Nachteile: komplexer Code, keine Unterstützung für HTTP/2, umständliche Handhabung von Timeouts und Fehlern.



2. Moderner HttpClient (Java 11+)



Ab Java 11 wurde der Standardbibliothek ein neuer java.net.http.HttpClient hinzugefügt. Er unterstützt HTTP/2, WebSocket, asynchrone Anfragen und bietet eine viel sauberere und modernere API.



Synchroner GET-Request:

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

public class ModernHttpClientExample { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://a

Blogs

Buchempfehlungen