0Pricing
Java Academy · Pelajaran

Body dan Header Permintaan

Kirim data POST dan atur header.

Body dan Header Permintaan adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 4 pelajaran total.

Isi Permintaan dan Header

Permintaan GET jarang memerlukan isi, tetapi POST, PUT, dan PATCH memerlukannya. Klien HTTP JDK menggunakan objek BodyPublisher untuk menyediakan isi permintaan dan metode pembangun untuk mengatur header.

Pelajaran ini membahas pengiriman data dan pengendalian header seperti Content-Type.

BodyPublishers.ofString

Publisher paling sederhana mengirimkan isi berupa string. Teruskan publisher tersebut ke metode POST(...) pada pembangun permintaan.

BodyPublishers.noBody() tersedia untuk permintaan tanpa isi.

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

Mengatur Satu Header

Gunakan header(name, value) untuk menambahkan satu header. Untuk mengirim JSON, Anda hampir selalu perlu mengatur Content-Type.

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

Beberapa Header Sekaligus

headers(name1, value1, name2, value2, ...) mengatur beberapa header dalam satu panggilan. Jumlah argumen harus genap atau metode ini akan melempar 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());
    }
}

Header Otorisasi

Token Bearer dikirim melalui header Authorization. Buat nilainya sebagai string; jangan pernah mencatat token mentah.

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 dan DELETE

Pembangun tersebut memiliki metode khusus: PUT(publisher), DELETE(), dan method(name, publisher) generik untuk metode lain seperti 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());
    }
}

Isi Berformat Formulir

Untuk data application/x-www-form-urlencoded, Anda membuat string isi secara manual, melakukan pengodean URL pada setiap nilai, lalu menerbitkannya sebagai string.

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

Mengirim Isi Berkas

BodyPublishers.ofFile(path) mengalirkan berkas sebagai isi permintaan tanpa memuat seluruhnya ke memori — ideal untuk pengunggahan.

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

Isi Larik Byte

Jika byte sudah tersedia di memori, BodyPublishers.ofByteArray(byte[]) mengirimkannya secara langsung. Ini berguna untuk muatan biner yang dibuat saat program berjalan.

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

Header Terbatas

Demi keamanan, klien melarang Anda mengatur header tertentu seperti Host, Content-Length, Connection, dan Upgrade. Upaya untuk mengaturnya akan melempar IllegalArgumentException — klien mengelolanya sendiri.

Menggabungkannya

POST JSON yang umum menggabungkan publisher isi dan header tipe konten:

  • .POST(BodyPublishers.ofString(json))
  • .header("Content-Type", "application/json")
  • add .header("Authorization", "Bearer ...") jika diperlukan

Uji Cepat

Uji pemahaman Anda tentang isi permintaan dan header.

Rangkuman

Anda telah mempelajari cara mengirim data dan mengendalikan header:

  • BodyPublishers.ofString / ofByteArray / ofFile menyediakan isi permintaan.
  • POST / PUT / DELETE / method(...) memilih verba HTTP.
  • header(...) dan headers(...) mengatur header permintaan.
  • Atur Content-Type untuk JSON dan data formulir; gunakan Authorization untuk token.
  • Beberapa header (Host, Content-Length) dibatasi dan dikelola oleh klien.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Body dan Header Permintaan” gratis?

Ya — teks lengkap “Body dan Header Permintaan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Body dan Header Permintaan”?

Kirim data POST dan atur header. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Java Academy?

Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Body dan Header Permintaan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. java.net.http.HttpClient
  2. Permintaan Asinkron
  3. Body dan Header Permintaan
  4. Menangani Respons
← Kembali ke Java Academy