Hantar permintaan HTTP tak segerak dan kendalikan respons menggunakan HttpClient baharu dalam Java 11
Dalam Java 11, kelas HttpClient baharu telah diperkenalkan, menyediakan keupayaan berkuasa untuk menghantar permintaan HTTP dan mengendalikan respons. Berbanding dengan HttpURLConnection sebelumnya, HttpClient baharu lebih mudah digunakan dan menyokong operasi tak segerak, menjadikannya lebih cekap untuk mengendalikan permintaan serentak. Artikel ini akan memperkenalkan cara menggunakan HttpClient baharu dalam Java 11 untuk menghantar permintaan HTTP tak segerak dan mengendalikan respons.
Pertama, kita perlu mencipta objek HttpClient, yang boleh dibuat melalui kaedah HttpClient.newBuilder(). Apabila mencipta objek HttpClient, kami boleh menentukan beberapa parameter tertentu, seperti tamat masa, proksi, dsb. Berikut ialah contoh kod untuk mencipta objek HttpClient:
import java.net.http.HttpClient; HttpClient httpClient = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .build();
Seterusnya, kita boleh menggunakan objek HttpClient untuk menghantar permintaan HTTP. Dalam HttpClient, terdapat tiga jenis permintaan: GET, POST dan PUT. Kita boleh menggunakan kaedah HttpRequest.newBuilder() untuk mencipta objek HttpRequest dan menentukan URL, kaedah, pengepala permintaan dan parameter lain yang diminta. Berikut ialah contoh kod untuk menghantar permintaan GET:
import java.net.http.HttpRequest; import java.net.URI; // 发送GET请求 HttpRequest getRequest = HttpRequest.newBuilder() .uri(URI.create("http://example.com/api")) .GET() .build(); // 发送异步请求 httpClient.sendAsync(getRequest, HttpResponse.BodyHandlers.ofString()) .thenApply(HttpResponse::body) .thenAccept(System.out::println);
Dalam kod di atas, kami menentukan URL yang diminta melalui kaedah uri HttpRequest.Builder dan mencipta objek HttpRequest menggunakan kaedah GET. Kemudian, kami menggunakan kaedah sendAsync HttpClient untuk menghantar permintaan dan menggunakan HttpResponse.BodyHandlers.ofString() untuk menentukan cara respons dikendalikan. Akhir sekali, kami menggunakan kaedah thenApply dan thenAccept untuk memproses kandungan respons masing-masing.
Selain permintaan GET, kami juga boleh menghantar permintaan POST dan PUT. Kod sampel untuk menghantar permintaan POST adalah seperti berikut:
import java.net.http.HttpRequest; import java.net.URI; import java.net.http.HttpRequest.BodyPublishers; // 发送POST请求 HttpRequest postRequest = HttpRequest.newBuilder() .uri(URI.create("http://example.com/api")) .header("Content-Type", "application/json") .POST(BodyPublishers.ofString("{"key": "value"}")) .build(); // 发送异步请求 httpClient.sendAsync(postRequest, HttpResponse.BodyHandlers.ofString()) .thenApply(HttpResponse::body) .thenAccept(System.out::println);
Dalam kod di atas, kami menentukan Jenis Kandungan pengepala permintaan sebagai aplikasi/json melalui kaedah pengepala HttpRequest.Builder, dan mencipta objek HttpRequest menggunakan kaedah POST. Kemudian, kami menggunakan kaedah sendAsync HttpClient untuk menghantar permintaan dan menggunakan HttpResponse.BodyHandlers.ofString() untuk menentukan cara respons dikendalikan. Akhir sekali, kami menggunakan kaedah thenApply dan thenAccept untuk memproses kandungan respons masing-masing.
Selain menghantar permintaan dan memproses respons, HttpClient juga menyediakan beberapa kaedah berguna lain, seperti menetapkan proksi, pengesahan HTTP, dsb. Untuk butiran, sila rujuk dokumentasi Java rasmi.
Untuk meringkaskan, kelas HttpClient baharu dalam Java 11 menyediakan cara yang lebih mudah dan cekap untuk menghantar permintaan HTTP dan mengendalikan respons. Dengan menggunakan kelas HttpClient baharu, kami boleh menghantar permintaan GET, POST dan PUT tak segerak dan menggunakan kod ringkas untuk mengendalikan respons. Ini membolehkan pembangun mengendalikan permintaan serentak dengan lebih cekap dan meningkatkan prestasi aplikasi.
Pautan rujukan:
Atas ialah kandungan terperinci Hantar permintaan HTTP tak segerak dan kendalikan respons menggunakan HttpClient baharu dalam Java 11. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!