Yanıtları İşleme
BodyHandlers ve durum kodları
Yanıtları İşleme, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 4. 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.
Yanıtları Yönetme
HTTP istemcisine yapılan her çağrı bir HttpResponse<T> döndürür. Genel tür T, geçirdiğiniz BodyHandler tarafından belirlenir. Bu derste kullanılabilir işleyicileri ve durum kodlarının nasıl yorumlanacağını inceleyeceğiz.
HttpResponse API'si
HttpResponse üzerindeki temel yöntemler:
statusCode()— int türündeki durum.body()—Ttüründeki kodu çözülmüş gövde.headers()— yanıt üstbilgileri.uri()— son URI (yönlendirmelerden sonra).version()— HTTP/1.1 veya HTTP/2.
BodyHandlers.ofString
En yaygın işleyici, yanıttaki karakter kümesini kullanarak gövdenin kodunu bir String içine çözer; varsayılan olarak UTF-8 kullanır. Yanıt türü HttpResponse<String> olur.
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
Görseller gibi ikili içerikler için ofByteArray() kullanın. Gövde türü, diske yazabileceğiniz veya kodunu kendiniz çözebileceğiniz byte[] olur.
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), yanıtı doğrudan diske akış halinde aktarır ve size bir HttpResponse<Path> verir. Bu, büyük bir indirmeyi bellekte arabelleğe alma gereğini ortadan kaldırır.
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
Yalnızca durum ve üstbilgiler önemliyse discarding() gövdeyi atar ve HttpResponse<Void> üretir. Arabelleğe alma maliyetini önler.
Başarıyı Denetleme
Yaygın bir yardımcı yöntem, gövdeye güvenmeden önce durumun 2xx aralığında olup olmadığını denetler.
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));
}
}Durum Kategorilerine Tepki Verme
Başarı, yönlendirme ve hata mantığınızı dallandırmak için ilk basamağa göre seçim yapın.
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));
}
}mapping ile Gövdeleri Eşleme
BodyHandlers.mapping(upstream, fn), başka bir işleyiciyi sarar ve sonucunu dönüştürür. Örneğin, her şeyi işleyicinin içinde yaparak bir dize gövdesini tamsayı uzunluğuna ayrıştırabilirsiniz.
Belirli Bir Üstbilgiyi Okuma
Bir yanıt üstbilgisinin değerini okumak için, bir Optional<String> döndüren headers().firstValue(name) kullanın. Yinelenen bir üstbilginin tüm değerleri için allValues(name) kullanın.
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);
}
}İşleyici Seçme
- ofString — metin ve JSON API'leri.
- ofByteArray — bellekte tutulan küçük ikili yükler.
- ofFile — diske akış halinde aktarılan büyük indirmeler.
- ofInputStream — gövdeyi akış olarak işleme.
- discarding — yalnızca durum denetlenen istekler.
Kısa Kontrol
Yanıtların işlenmesi konusundaki kavrayışınızı sınayın.
Özet
HTTP yanıtlarını yorumlamayı öğrendiniz:
- HttpResponse,
statusCode(),body()veheaders()yöntemlerini sunar. - BodyHandler, gövde türünü belirler: String, bayt dizisi, yol, boş değer veya akış.
- Bellek baskısından kaçınmak için büyük indirmelerde
ofFilekullanın. - Durum kodlarını ilk basamaklarına göre sınıflandırın ve başarı için 2xx aralığını kontrol edin.
- Üst bilgileri
firstValue/allValuesile okuyun.
Yapay zeka eğitmeniyle Java öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 104
- Dersler
- 374
Sıkça Sorulan Sorular
“Yanıtları İşleme” dersi ücretsiz mi?
Evet — “Yanıtları İşleme” 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.
“Yanıtları İşleme” dersinde ne öğreneceğim?
BodyHandlers ve durum kodları 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 4. dersidir.
“Yanıtları İşleme” 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.