Java Academy · Ders

Yanıtları İşleme

BodyHandlers ve durum kodları

4. ders / 413 adım

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() — T tü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() ve headers() 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 ofFile kullanı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 / allValues ile okuyun.
Başlamak ücretsiz

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.

Bu kursun tüm dersleri

  1. java.net.http.HttpClient
  2. Eşzamansız İstekler
  3. İstek Gövdeleri ve Üst Bilgiler
  4. Yanıtları İşleme
← Java Academy Sayfasına Dön