Java Academy · Les

Request bodies en headers

POST-gegevens versturen en headers instellen

Les 3 van 413 stappen

Request bodies en headers is een gratis Java Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Java Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Java Academy bevat in totaal 4 lessen.

Aanvraaginhoud en kopteksten

GET-aanvragen hebben zelden inhoud nodig, maar POST, PUT en PATCH wel. De JDK HTTP-client gebruikt objecten van het type BodyPublisher om aanvraaginhoud te leveren en builder-methodes om kopteksten in te stellen.

Deze les behandelt het verzenden van gegevens en het beheren van kopteksten zoals Content-Type.

BodyPublishers.ofString

De eenvoudigste inhoudsleverancier verzendt een tekenreeks als aanvraaginhoud. Geef deze door aan de methode POST(...) van de aanvraagbuilder.

BodyPublishers.noBody() bestaat voor aanvragen zonder inhoud.

import java.net.URI;
import java.net.http.HttpRequest;
import java.net.http.HttpRequest.BodyPublishers;

public class Main {
    public static void main(String[] args) {
        String json = "{\"name\":\"Ada\"}";
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://example.com/users"))
            .POST(BodyPublishers.ofString(json))
            .build();
        System.out.println("Method: " + request.method());
    }
}

Eén koptekst instellen

Gebruik header(name, value) om één koptekst toe te voegen. Als je JSON verzendt, stel je vrijwel altijd Content-Type in.

import java.net.URI;
import java.net.http.HttpRequest;
import java.net.http.HttpRequest.BodyPublishers;

public class Main {
    public static void main(String[] args) {
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://example.com/users"))
            .header("Content-Type", "application/json")
            .POST(BodyPublishers.ofString("{}"))
            .build();
        System.out.println("Has Content-Type: " +
            request.headers().firstValue("Content-Type").isPresent());
    }
}

Meerdere kopteksten tegelijk

headers(name1, value1, name2, value2, ...) stelt meerdere kopteksten in één aanroep in. Het aantal argumenten moet even zijn, anders genereert de methode IllegalArgumentException.

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

public class Main {
    public static void main(String[] args) {
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://example.com"))
            .headers(
                "Accept", "application/json",
                "Accept-Language", "en-US")
            .GET()
            .build();
        System.out.println(request.headers().map().keySet());
    }
}

Autorisatiekopteksten

Bearer-tokens worden verzonden via de koptekst Authorization. Bouw de waarde op als tekenreeks; schrijf het onbewerkte token nooit naar het logboek.

public class Main {
    public static void main(String[] args) {
        String token = "abc123";
        String headerValue = "Bearer " + token;
        System.out.println("Authorization: Bearer ***");
        System.out.println("Length: " + headerValue.length());
    }
}

PUT en DELETE

De builder heeft speciale methodes: PUT(publisher), DELETE() en de algemene methode method(name, publisher) voor al het andere, zoals PATCH.

import java.net.URI;
import java.net.http.HttpRequest;
import java.net.http.HttpRequest.BodyPublishers;

public class Main {
    public static void main(String[] args) {
        HttpRequest patch = HttpRequest.newBuilder()
            .uri(URI.create("https://example.com/users/1"))
            .method("PATCH", BodyPublishers.ofString("{\"active\":true}"))
            .build();
        System.out.println("Method: " + patch.method());
    }
}

Met formulieren gecodeerde inhoud

Voor gegevens van het type application/x-www-form-urlencoded bouw je de inhoudstekenreeks handmatig op. Je codeert elke waarde voor een URL en verzendt de tekenreeks vervolgens.

import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

public class Main {
    public static void main(String[] args) {
        String body = "name=" + URLEncoder.encode("Ada Lovelace", StandardCharsets.UTF_8)
            + "&role=" + URLEncoder.encode("engineer", StandardCharsets.UTF_8);
        System.out.println(body);
    }
}

Een bestandsinhoud verzenden

BodyPublishers.ofFile(path) verzendt een bestand als aanvraaginhoud zonder het volledig in het geheugen te laden — ideaal voor uploads.

import java.net.URI;
import java.net.http.HttpRequest;
import java.net.http.HttpRequest.BodyPublishers;
import java.nio.file.Path;

public class Main {
    public static void main(String[] args) throws Exception {
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://example.com/upload"))
            .header("Content-Type", "application/octet-stream")
            .POST(BodyPublishers.ofFile(Path.of("data.bin")))
            .build();
        System.out.println("Upload request built");
    }
}

Inhoud als byte-array

Als je al bytes in het geheugen hebt, verzendt BodyPublishers.ofByteArray(byte[]) deze rechtstreeks. Dit is handig voor binaire gegevens die tijdens de uitvoering worden opgebouwd.

import java.nio.charset.StandardCharsets;

public class Main {
    public static void main(String[] args) {
        byte[] payload = "raw-bytes".getBytes(StandardCharsets.UTF_8);
        // BodyPublishers.ofByteArray(payload) would wrap these bytes
        System.out.println("Payload size: " + payload.length + " bytes");
    }
}

Beperkte kopteksten

Om veiligheidsredenen verbiedt de client je bepaalde kopteksten in te stellen, zoals Host, Content-Length, Connection en Upgrade. Als je ze toch instelt, genereert de client IllegalArgumentException — de client beheert deze kopteksten zelf.

Alles samenbrengen

Een gebruikelijke JSON-POST combineert een inhoudsleverancier met een koptekst voor het inhoudstype:

  • .POST(BodyPublishers.ofString(json))
  • .header("Content-Type", "application/json")
  • voeg indien nodig .header("Authorization", "Bearer ...") toe

Korte toets

Toets je begrip van aanvraaginhoud en kopteksten.

Samenvatting

Je hebt geleerd hoe je gegevens verzendt en kopteksten beheert:

  • BodyPublishers.ofString / ofByteArray / ofFile leveren aanvraaginhoud.
  • POST / PUT / DELETE / method(...) kiezen de HTTP-methode.
  • header(...) en headers(...) stellen aanvraagkopteksten in.
  • Stel Content-Type in voor JSON en formuliergegevens; gebruik Authorization voor tokens.
  • Sommige kopteksten (Host, Content-Length) zijn beperkt en worden door de client beheerd.
Gratis beginnen

Leer Java met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
104
Lessen
374

Veelgestelde vragen

Is de les “Request bodies en headers” gratis?

Ja — de volledige tekst van “Request bodies en headers” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Java Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Java Academy bevat in totaal 4 lessen.

Wat leer ik in “Request bodies en headers”?

POST-gegevens versturen en headers instellen Je oefent met Java Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Java Academy te beginnen?

Ervaring vooraf is niet nodig. Java Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Request bodies en headers”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Java Academy?

Ja. Elke les over Java Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. java.net.http.HttpClient
  2. Asynchrone verzoeken
  3. Request bodies en headers
  4. Responses verwerken
← Terug naar Java Academy