Heim  >  Artikel  >  Java  >  Senden Sie HTTP-Anfragen und verarbeiten Sie asynchrone Antworten mit dem neuen HttpClient in Java 13

Senden Sie HTTP-Anfragen und verarbeiten Sie asynchrone Antworten mit dem neuen HttpClient in Java 13

王林
王林Original
2023-07-31 16:39:21861Durchsuche

Senden Sie HTTP-Anfragen und verarbeiten Sie asynchrone Antworten mit dem neuen HttpClient in Java 13.

In Java 13 wurde eine neue HttpClient-API eingeführt, die einen voll ausgestatteten HTTP-Client bereitstellt, der HTTP-Anfragen senden und die zurückgegebene asynchrone Antwort verarbeiten kann. Diese neue HttpClient-API ist sehr einfach und flexibel zu verwenden und bequemer als die vorherige HttpURLConnection.

Zuerst müssen wir eine neue HttpClient-Instanz in der Java 13-Umgebung erstellen. Sie können den folgenden Code verwenden, um HttpClient zu erstellen:

HttpClient httpClient = HttpClient.newHttpClient();

Als nächstes können wir das erstellte HttpClient-Objekt verwenden, um HTTP-Anfragen zu senden. Wir können GET-Anfragen, POST-Anfragen usw. senden. Am Beispiel des Sendens einer GET-Anfrage können wir den folgenden Codeausschnitt verwenden:

URI uri = URI.create("http://www.example.com");
HttpRequest request = HttpRequest.newBuilder()
                .uri(uri)
                .build();

Im obigen Code erstellen wir ein URI-Objekt, um die angeforderte URL darzustellen, und verwenden die Methode HttpRequest.newBuilder(), um ein HttpRequest-Objekt zu erstellen . Anschließend können wir die sendAsync()-Methode des HttpClient-Objekts verwenden, um eine asynchrone Anfrage zu senden und ein CompletableFuture-Objekt abzurufen, über das die asynchrone Antwort verarbeitet werden kann.

CompletableFuture<HttpResponse<String>> future = httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofString());

Im obigen Code verwenden wir die sendAsync()-Methode des HttpClient-Objekts, um die Anfrage zu senden, und übergeben ein HttpResponse.BodyHandlers.ofString()-Objekt, um anzugeben, wie mit der Antwort umgegangen wird (hier wird die Zeichenfolgenform verwendet). . Die Methode sendAsync() gibt sofort ein CompletableFuture-Objekt zurück, das das Ergebnis des asynchronen Vorgangs darstellt. Wir können dieses CompletableFuture-Objekt verwenden, um asynchrone Antworten zu verarbeiten.

Wir können das Warten auf den Abschluss der asynchronen Antwort blockieren und das Antwortobjekt erhalten, indem wir die get()-Methode des CompletableFuture-Objekts aufrufen. Das Folgende ist ein Beispielcode:

try {
    HttpResponse<String> response = future.get();
    System.out.println("Response Code: " + response.statusCode());
    System.out.println("Response Body: " + response.body());
} catch (InterruptedException | ExecutionException e) {
    e.printStackTrace();
}

Im obigen Code rufen wir die Methode „future.get()“ auf, um das asynchrone Antwortobjekt abzurufen. Wenn der asynchrone Vorgang noch nicht abgeschlossen ist, blockiert die Methode get() und wartet, bis der Vorgang abgeschlossen ist. Sobald der asynchrone Vorgang abgeschlossen ist, können wir das HttpResponse-Objekt verwenden, um den Antwortstatuscode und den Antworttext abzurufen.

Zusätzlich zur Verwendung von CompletableFuture-Objekten können wir auch Rückruffunktionen verwenden, um asynchrone Antworten zu verarbeiten. Die HttpClient-API von Java 13 bietet zwei Möglichkeiten zum Registrieren von Rückruffunktionen, nämlich thenApply() und thenAccept(). Hier ist ein Beispielcode, der thenApply() verwendet:

CompletableFuture<HttpResponse<String>> future = httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofString());
future.thenApply(response -> {
    System.out.println("Response Code: " + response.statusCode());
    System.out.println("Response Body: " + response.body());
    return response;
});

Mithilfe der thenApply()-Methode können wir eine Rückruffunktion definieren, um asynchrone Antworten zu verarbeiten. Wenn die asynchrone Antwort abgeschlossen ist, wird die Rückruffunktion aufgerufen und wir können die Antwort in der Rückruffunktion verarbeiten.

Zusammenfassend lässt sich sagen, dass das Senden von HTTP-Anfragen und die Verarbeitung asynchroner Antworten in Java 13 mit dem neuen HttpClient sehr einfach ist. Wir erstellen einfach ein HttpClient-Objekt, verwenden es zum Senden der Anfrage und verarbeiten dann die asynchrone Antwort über das CompletableFuture-Objekt oder die Rückruffunktion. Diese neue HttpClient-API bietet sehr flexible und leistungsstarke Funktionen, die die Interaktion mit Webdiensten erleichtern. Gleichzeitig sorgt es für eine bessere Leistung und ein besseres Ressourcenmanagement.

Ich hoffe, dass der Beispielcode in diesem Artikel Ihnen beim Einstieg in die neue HttpClient-API in Java 13 helfen und in tatsächlichen Projekten eine Rolle spielen kann.

Das obige ist der detaillierte Inhalt vonSenden Sie HTTP-Anfragen und verarbeiten Sie asynchrone Antworten mit dem neuen HttpClient in Java 13. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn