İstek Gövdeleri ve Üst Bilgiler
POST verileri gönderin ve üst bilgileri ayarlayın
İstek Gövdeleri ve Üst Bilgiler, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.
İstek Gövdeleri ve Üstbilgileri
GET isteklerinin nadiren gövdeye ihtiyacı olur, ancak POST, PUT ve PATCH isteklerinde gövde gerekir. JDK HTTP istemcisi, istek gövdelerini sağlamak için BodyPublisher nesnelerini ve üstbilgileri ayarlamak için oluşturucu yöntemlerini kullanır.
Bu derste veri göndermeyi ve Content-Type gibi üstbilgileri denetlemeyi ele alacağız.
BodyPublishers.ofString
En basit yayınlayıcı bir dize gövdesi gönderir. Bunu istek oluşturucusundaki POST(...) yöntemine geçirin.
BodyPublishers.noBody(), gövdesiz istekler için kullanılır.
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());
}
}Tek Bir Üstbilgi Ayarlama
Tek bir üstbilgi eklemek için header(name, value) kullanın. JSON göndermek için neredeyse her zaman Content-Type ayarlarsınız.
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());
}
}Bir Kerede Birden Çok Üstbilgi
headers(name1, value1, name2, value2, ...), tek bir çağrıyla birkaç üstbilgi ayarlar. Argüman sayısı çift olmalıdır; aksi hâlde IllegalArgumentException fırlatılır.
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());
}
}Yetkilendirme Üstbilgileri
Bearer belirteçleri Authorization üstbilgisi aracılığıyla gönderilir. Değeri bir dize olarak oluşturun; ham belirteci hiçbir zaman günlüğe kaydetmeyin.
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 ve DELETE
Oluşturucuda özel yöntemler vardır: PUT(publisher), DELETE() ve PATCH gibi diğer her şey için genel method(name, publisher) yöntemi.
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());
}
}Form Kodlamalı Gövdeler
application/x-www-form-urlencoded verileri için gövde dizesini elle oluşturur, her değere URL kodlaması uygular ve ardından bunu bir dize olarak yayınlarsınız.
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);
}
}Dosya Gövdesi Gönderme
BodyPublishers.ofFile(path), bir dosyayı tamamını belleğe yüklemeden istek gövdesi olarak akış halinde aktarır — yüklemeler için idealdir.
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");
}
}Bayt Dizisi Gövdeleri
Bellekte zaten baytlarınız varsa BodyPublishers.ofByteArray(byte[]) bunları doğrudan gönderir. Bu, çalışma zamanında oluşturulan ikili yükler için kullanışlıdır.
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");
}
}Kısıtlanmış Üstbilgiler
İstemci, güvenlik nedeniyle Host, Content-Length, Connection ve Upgrade gibi belirli üstbilgileri ayarlamanızı engeller. Bunları ayarlamaya çalışmak IllegalArgumentException fırlatır — istemci bunları kendi yönetir.
Hepsini Bir Araya Getirme
Tipik bir JSON POST isteği, bir gövde yayınlayıcıyı ve içerik türü üstbilgisini birleştirir:
.POST(BodyPublishers.ofString(json)).header("Content-Type", "application/json")- Gerekirse
.header("Authorization", "Bearer ...")ekleyin
Hızlı Kontrol
İstek gövdelerini ve üstbilgileri anlayıp anlamadığınızı sınayın.
Özet
Veri göndermeyi ve üstbilgileri denetlemeyi öğrendiniz:
- BodyPublishers.ofString / ofByteArray / ofFile istek gövdelerini sağlar.
- POST / PUT / DELETE / method(...) HTTP fiilini seçer.
- header(...) ve headers(...) istek üstbilgilerini ayarlar.
- JSON ve form verileri için
Content-Typeayarlayın; belirteçler içinAuthorizationkullanın. - Bazı üstbilgiler (Host, Content-Length) kısıtlıdır ve istemci tarafından yönetilir.
Sıkça Sorulan Sorular
“İstek Gövdeleri ve Üst Bilgiler” dersi ücretsiz mi?
Evet — “İstek Gövdeleri ve Üst Bilgiler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.
“İstek Gövdeleri ve Üst Bilgiler” dersinde ne öğreneceğim?
POST verileri gönderin ve üst bilgileri ayarlayın Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Java Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“İstek Gövdeleri ve Üst Bilgiler” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- java.net.http.HttpClient
- Eşzamansız İstekler
- İstek Gövdeleri ve Üst Bilgiler
- Yanıtları İşleme