Request bodies en headers
POST-gegevens versturen en headers instellen
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-Typein voor JSON en formuliergegevens; gebruikAuthorizationvoor tokens. - Sommige kopteksten (Host, Content-Length) zijn beperkt en worden door de client beheerd.
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
- java.net.http.HttpClient
- Asynchrone verzoeken
- Request bodies en headers
- Responses verwerken