Java Academy · Leçon

Gérer les réponses

BodyHandlers et codes d’état

Leçon 4 sur 413 étapes

Gérer les réponses est une leçon Java Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Java Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Java Academy comprend 4 leçons au total.

Gérer les réponses

Chaque appel au client HTTP renvoie un HttpResponse<T>. Le type générique T est déterminé par le BodyHandler que vous transmettez. Cette leçon présente les gestionnaires disponibles et explique comment interpréter les codes d’état.

L’API HttpResponse

Méthodes principales de HttpResponse :

  • statusCode() — le code d’état de type int.
  • body() — le corps décodé de type T.
  • headers() — les en-têtes de réponse.
  • uri() — l’URI finale, après les redirections.
  • version() — HTTP/1.1 ou HTTP/2.

BodyHandlers.ofString

Le gestionnaire le plus courant décode le corps dans une String en utilisant le jeu de caractères de la réponse, avec UTF-8 par défaut. Le type de la réponse est HttpResponse<String>.

import java.net.URI;
import java.net.http.*;

public class Main {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest req = HttpRequest.newBuilder()
            .uri(URI.create("https://example.com")).build();
        HttpResponse<String> res =
            client.send(req, HttpResponse.BodyHandlers.ofString());
        System.out.println(res.body().length());
    }
}

BodyHandlers.ofByteArray

Pour le contenu binaire, comme des images, utilisez ofByteArray(). Le type du corps devient byte[], que vous pouvez écrire sur le disque ou décoder vous-même.

public class Main {
    public static void main(String[] args) {
        // ofByteArray() yields HttpResponse<byte[]>
        byte[] simulated = { 1, 2, 3, 4 };
        System.out.println("Bytes received: " + simulated.length);
    }
}

BodyHandlers.ofFile

ofFile(path) diffuse directement la réponse sur le disque et vous fournit un HttpResponse<Path>. Cela évite de mettre un téléchargement volumineux en mémoire tampon.

import java.net.URI;
import java.net.http.*;
import java.nio.file.Path;

public class Main {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest req = HttpRequest.newBuilder()
            .uri(URI.create("https://example.com/file.zip")).build();
        HttpResponse<Path> res = client.send(req,
            HttpResponse.BodyHandlers.ofFile(Path.of("out.zip")));
        System.out.println("Saved to: " + res.body());
    }
}

BodyHandlers.discarding

Lorsque seuls le code d’état et les en-têtes vous intéressent, discarding() jette le corps, ce qui produit un HttpResponse<Void>. Cela évite le coût de la mise en mémoire tampon.

Vérifier la réussite

Une fonction utilitaire courante vérifie que le code d’état se situe dans la plage 2xx avant de faire confiance au corps.

public class Main {
    static boolean isSuccess(int code) {
        return code >= 200 && code < 300;
    }
    public static void main(String[] args) {
        System.out.println(isSuccess(204));
        System.out.println(isSuccess(404));
    }
}

Réagir aux catégories de codes d’état

Faites un choix selon le premier chiffre pour orienter votre logique en fonction des réussites, des redirections et des erreurs.

public class Main {
    static String classify(int code) {
        return switch (code / 100) {
            case 2 -> "Success";
            case 3 -> "Redirect";
            case 4 -> "Client error";
            case 5 -> "Server error";
            default -> "Unknown";
        };
    }
    public static void main(String[] args) {
        System.out.println(classify(503));
        System.out.println(classify(200));
    }
}

Transformer les corps avec mappage

BodyHandlers.mapping(upstream, fn) encapsule un autre gestionnaire et transforme son résultat. Par exemple, vous pouvez analyser un corps sous forme de chaîne pour obtenir une longueur entière, le tout dans le gestionnaire.

Lire un en-tête spécifique

Pour lire la valeur d’un en-tête de réponse, utilisez headers().firstValue(name), qui renvoie un Optional<String>. Pour obtenir toutes les valeurs d’un en-tête répété, utilisez allValues(name).

import java.util.Optional;

public class Main {
    public static void main(String[] args) {
        Optional<String> len = Optional.of("1024");
        int contentLength = len.map(Integer::parseInt).orElse(0);
        System.out.println("Content-Length: " + contentLength);
    }
}

Choisir un gestionnaire

  • ofString — API de texte et API JSON.
  • ofByteArray — petites charges utiles binaires conservées en mémoire.
  • ofFile — téléchargements volumineux diffusés sur le disque.
  • ofInputStream — traiter le corps comme un flux.
  • abandon — requêtes portant uniquement sur le code d’état.

Vérification rapide

Vérifiez votre compréhension de la gestion des réponses.

Récapitulatif

Vous avez appris à interpréter les réponses HTTP :

  • HttpResponse fournit statusCode(), body() et headers().
  • BodyHandler détermine le type du corps : String, tableau d’octets, chemin, absence de valeur ou flux.
  • Utilisez ofFile pour les téléchargements volumineux afin d’éviter une pression excessive sur la mémoire.
  • Classez les codes d’état selon leur premier chiffre et vérifiez la plage 2xx pour confirmer la réussite.
  • Lisez les en-têtes avec firstValue / allValues.
Gratuit pour commencer

Apprends Java avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
104
Leçons
374

Questions Fréquemment Posées

La leçon « Gérer les réponses » est-elle gratuite ?

Oui — le texte complet de « Gérer les réponses » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Java Academy, passe à CoddyKit PRO. Le cours Java Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Gérer les réponses » ?

BodyHandlers et codes d’état Tu pratiques Java Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Java Academy ?

Aucune expérience préalable n'est requise. Java Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Gérer les réponses » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Java Academy ?

Oui. Chaque leçon Java Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. java.net.http.HttpClient
  2. Requêtes asynchrones
  3. Corps et en-têtes des requêtes
  4. Gérer les réponses
← Retour à Java Academy