HttpClient (java.net.http)
Daraja: O'rta
Java 11'dan boshlab standart kutubxonada zamonaviy `HttpClient` bor — tashqi kutubxonasiz HTTP so'rov yuborish mumkin. Uch qism: `HttpClient` (mijoz, bir marta yaratiladi va qayta ishlatiladi), `HttpRequest` (so'rov), `HttpResponse` (javob). Sinxron (`send`) va asinxron (`sendAsync`) rejimlari bor.
Tushuntirish
Java 11'dan boshlab standart kutubxonada zamonaviy `HttpClient` bor — tashqi kutubxonasiz HTTP so'rov yuborish mumkin. Uch qism: `HttpClient` (mijoz, bir marta yaratiladi va qayta ishlatiladi), `HttpRequest` (so'rov), `HttpResponse` (javob). Sinxron (`send`) va asinxron (`sendAsync`) rejimlari bor.
Kod misoli
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.followRedirects(HttpClient.Redirect.NORMAL)
.build();
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://api.github.com/users/torvalds"))
.header("Accept", "application/json")
.timeout(Duration.ofSeconds(15))
.GET()
.build();
HttpResponse<String> res = client.send(req, HttpResponse.BodyHandlers.ofString());
if (res.statusCode() == 200) {
System.out.println(res.body());
} else {
System.err.println("Xato kod: " + res.statusCode());
}
// POST + JSON
HttpRequest post = HttpRequest.newBuilder()
.uri(URI.create("https://httpbin.org/post"))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString("{\"ism\":\"Ali\"}"))
.build();
Keng tarqalgan xatolar
- Status kodni tekshirmay body'ni parse qilish — 404 sahifasi JSON emas.
- Har so'rovga yangi HttpClient yaratish — resurs isrofi, bittasini qayta ishlat.
Mashqlar
- Ochiq API'dan (masalan HN yoki GitHub) ma'lumot olib konsolga chiqar.
- sendAsync bilan 5 ta URL'ni parallel so'rab, javob vaqtlarini solishtir.
Teglar: http, api, tarmoq