Maison >Java >javaDidacticiel >Envoyez des requêtes HTTP et gérez les réponses asynchrones à l'aide du nouveau HttpClient dans Java 13

Envoyez des requêtes HTTP et gérez les réponses asynchrones à l'aide du nouveau HttpClient dans Java 13

王林
王林original
2023-07-31 16:39:21901parcourir

Envoyez des requêtes HTTP et gérez des réponses asynchrones à l'aide du nouveau HttpClient dans Java 13

Dans Java 13, une nouvelle API HttpClient a été introduite qui fournit un client HTTP complet capable d'envoyer des requêtes HTTP et de gérer la réponse asynchrone renvoyée. Cette nouvelle API HttpClient est très simple et flexible à utiliser, plus pratique que la précédente HttpURLConnection.

Tout d'abord, nous devons créer une nouvelle instance HttpClient dans l'environnement Java 13. Vous pouvez utiliser le code suivant pour créer HttpClient :

HttpClient httpClient = HttpClient.newHttpClient();

Ensuite, nous pouvons utiliser l'objet HttpClient créé pour envoyer des requêtes HTTP. Nous pouvons envoyer des requêtes GET, des requêtes POST, etc. En prenant l'exemple de l'envoi d'une requête GET, nous pouvons utiliser l'extrait de code suivant :

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

Dans le code ci-dessus, nous créons un objet URI pour représenter l'URL demandée et utilisons la méthode HttpRequest.newBuilder() pour créer un objet HttpRequest. . Ensuite, nous pouvons utiliser la méthode sendAsync() de l'objet HttpClient pour envoyer une requête asynchrone et obtenir un objet CompletableFuture via lequel la réponse asynchrone peut être traitée.

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

Dans le code ci-dessus, nous utilisons la méthode sendAsync() de l'objet HttpClient pour envoyer la requête, et passons un objet HttpResponse.BodyHandlers.ofString() pour spécifier comment la réponse est gérée (la forme chaîne est utilisée ici) . La méthode sendAsync() renvoie immédiatement un objet CompletableFuture représentant le résultat de l'opération asynchrone. Nous pouvons utiliser cet objet CompletableFuture pour gérer les réponses asynchrones.

Nous pouvons bloquer l'attente de la fin de la réponse asynchrone et obtenir l'objet de réponse en appelant la méthode get() de l'objet CompletableFuture. Voici un exemple de code :

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

Dans le code ci-dessus, nous appelons la méthode future.get() pour obtenir l'objet de réponse asynchrone. Si l'opération asynchrone n'est pas encore terminée, la méthode get() bloquera l'attente jusqu'à ce que l'opération soit terminée. Une fois l'opération asynchrone terminée, nous pouvons utiliser l'objet HttpResponse pour obtenir le code d'état de la réponse et le corps de la réponse.

En plus d'utiliser les objets CompletableFuture, nous pouvons également utiliser des fonctions de rappel pour gérer les réponses asynchrones. L'API HttpClient de Java 13 propose deux façons d'enregistrer les fonctions de rappel, à savoir thenApply() et thenAccept(). Voici un exemple de code utilisant thenApply() :

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

En utilisant la méthode thenApply(), nous pouvons définir une fonction de rappel pour gérer les réponses asynchrones. Lorsque la réponse asynchrone est terminée, la fonction de rappel sera appelée et nous pourrons traiter la réponse dans la fonction de rappel.

Pour résumer, l'envoi de requêtes HTTP et la gestion des réponses asynchrones sont très simples en Java 13 grâce au nouveau HttpClient. Nous créons simplement un objet HttpClient, l'utilisons pour envoyer la requête, puis gérons la réponse asynchrone via l'objet CompletableFuture ou la fonction de rappel. Cette nouvelle API HttpClient offre des fonctionnalités très flexibles et puissantes qui facilitent l'interaction avec les services Web. Dans le même temps, il offre également de meilleures performances et une meilleure gestion des ressources.

J'espère que l'exemple de code de cet article pourra vous aider à démarrer avec la nouvelle API HttpClient dans Java 13 et à jouer un rôle dans des projets réels.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn