Menangani Respons
BodyHandlers dan kode status.
Menangani Respons adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.
Menangani Respons
Setiap panggilan ke klien HTTP mengembalikan HttpResponse<T>. Tipe generik T ditentukan oleh BodyHandler yang Anda teruskan. Pelajaran ini membahas handler yang tersedia dan cara menafsirkan kode status.
API HttpResponse
Metode utama pada HttpResponse:
statusCode()— status bertipe int.body()— isi yang telah didekodekan dengan tipeT.headers()— header respons.uri()— URI akhir (setelah pengalihan).version()— HTTP/1.1 atau HTTP/2.
BodyHandlers.ofString
Handler yang paling umum mendekode isi menjadi String menggunakan rangkaian karakter dari respons, dengan UTF-8 sebagai bawaan. Tipe responsnya adalah 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
Untuk konten biner seperti gambar, gunakan ofByteArray(). Tipe isinya menjadi byte[], yang dapat Anda tulis ke disk atau dekode sendiri.
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) mengalirkan respons langsung ke disk dan memberi Anda HttpResponse<Path>. Cara ini menghindari penyimpanan unduhan besar di memori.
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
Jika Anda hanya memerlukan status dan header, discarding() membuang isi respons dan menghasilkan HttpResponse<Void>. Cara ini menghindari biaya penyimpanan sementara.
Memeriksa Keberhasilan
Helper yang umum memeriksa apakah status berada dalam rentang 2xx sebelum mempercayai isi respons.
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));
}
}Menangani Kategori Status
Gunakan digit pertama untuk menentukan cabang logika bagi keberhasilan, pengalihan, dan kesalahan.
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));
}
}Memetakan Isi dengan mapping
BodyHandlers.mapping(upstream, fn) membungkus handler lain dan mengubah hasilnya. Sebagai contoh, Anda dapat mengurai isi string menjadi panjang bertipe integer, semuanya di dalam handler.
Membaca Header Tertentu
Untuk membaca nilai header respons, gunakan headers().firstValue(name), yang mengembalikan Optional<String>. Untuk semua nilai dari header berulang, gunakan 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);
}
}Memilih Handler
- ofString — API teks dan JSON.
- ofByteArray — muatan biner kecil yang disimpan di memori.
- ofFile — unduhan besar yang dialirkan ke disk.
- ofInputStream — memproses isi sebagai aliran.
- discarding — permintaan yang hanya memerlukan status.
Pemeriksaan Singkat
Uji pemahaman Anda tentang penanganan respons.
Ringkasan
Anda telah mempelajari cara menafsirkan respons HTTP:
- HttpResponse menyediakan
statusCode(),body(), danheaders(). - BodyHandler menentukan tipe isi: String, byte[], jalur, kosong, atau aliran.
- Gunakan
ofFileuntuk unduhan besar agar tidak membebani memori. - Klasifikasikan kode status berdasarkan digit pertamanya dan periksa rentang 2xx untuk keberhasilan.
- Baca tajuk dengan
firstValue/allValues.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menangani Respons” gratis?
Ya — teks lengkap “Menangani Respons” 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 “Menangani Respons”?
BodyHandlers dan kode status. 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 4 dari 4.
Berapa lama pelajaran “Menangani Respons” 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.