CodeGym /Java Course /Modul 3 /Membuat permintaan dengan HttpRequest

Membuat permintaan dengan HttpRequest

Modul 3
Level 10 , Pelajaran 1
Tersedia

metode newBuilder(), build()

Kelas HttpRequest digunakan untuk mendeskripsikan permintaan http, yang mudah dipahami dari namanya. Objek ini tidak melakukan apa-apa dengan sendirinya, hanya berisi berbagai informasi tentang permintaan http. Oleh karena itu, seperti yang mungkin sudah Anda duga, template Builder juga digunakan untuk membuatnya.

HttpRequest request = HttpRequest.newBuilder()
	.method1()
	.method2()
	.methodN()
    .build();

Di mana antara panggilan ke metode newBuilder() dan build() Anda perlu memanggil semua metode untuk membuat objekHttpRequest.

Contoh permintaan sederhana terlihat seperti ini:

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create(“http://codegym.cc”))
    .build();
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());

Anda dapat menemukan semua metode kelas HttpRequest di tautan dalam dokumentasi resmi .

Dan kemudian kami akan menganalisis yang paling populer di antara mereka.

metode uri()

Dengan menggunakan metode uri() , Anda dapat menyetel URI (atau URL) tujuan pengiriman permintaan http. Contoh:

HttpRequest request = HttpRequest.newBuilder()
    .uri( URI.create(“http://codegym.cc”) )
    .build();

Ngomong-ngomong, Anda bisa membuat kode ini sedikit lebih pendek dengan meneruskan URI langsung ke metode newBuilder() :

HttpRequest request = HttpRequest.newBuilder( URI.create(“http://codegym.cc”) ).build();

Penting! URI dapat dibuat dengan dua cara:

  • URI baru (String)
  • URI.buat(String)

Cara kedua lebih disukai. Cara pertama, sayangnya, tidak terlalu bagus, karena konstruktor URI dideklarasikan sebagai URI publik(String str) melempar URISyntaxException , dan URISyntaxException adalah pengecualian yang diperiksa.

Metode GET(), POST(), PUT(), DELETE()

Anda dapat mengatur metode permintaan http menggunakan metode berikut:

  • MENDAPATKAN()
  • POS()
  • MELETAKKAN()
  • MENGHAPUS()

Berikut tampilan permintaan GET yang sederhana:

HttpRequest request = HttpRequest.newBuilder()
  .uri(new URI("https://codegym.cc"))
  .GET()
  .build();

metode versi()

Anda juga dapat mengatur versi protokol HTTP. Hanya ada 2 pilihan:

  • HttpClient.Versi.HTTP_1_1
  • HttpClient.Versi.HTTP_2

Katakanlah Anda ingin membuat permintaan menggunakan protokol HTTP/2, maka Anda perlu menulis:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .version( HttpClient.Version.HTTP_2 )
   .GET()
   .build();

Sangat sederhana, bukan? :)

waktu habis() metode

Anda juga dapat mengatur waktu eksekusi kueri. Jika lolos dan permintaan tidak pernah selesai, HttpTimeoutException akan dilempar .

Waktu itu sendiri diatur menggunakan objekdurasidari Java DateTime API. Contoh:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .timeout( Duration.of(5, SECONDS) )
   .GET()
   .build();

Kehadiran metode ini menunjukkan bahwa kelas HttpClient dan HttpRequest dapat melakukan berbagai tugas. Bayangkan Anda sedang menjalankan permintaan, dan sesuatu terjadi pada jaringan dan berlangsung selama 30 detik. Jauh lebih berguna untuk segera menerima pengecualian dan bereaksi dengan benar.

header() metode

Anda juga dapat menambahkan sejumlah header ke permintaan apa pun. Dan itu mudah dilakukan seperti hal lainnya. Ada metode khusus untuk ini - header() . Contoh:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .header("name1", "value1")
   .header("name2", "value2")
   .GET()
   .build();

Ada cara alternatif lain untuk mengatur banyak header sekaligus. Mungkin berguna jika, misalnya, Anda mengonversi daftar tajuk menjadi larik:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .headers("name1", "value1", "name2", "value2")
   .GET()
   .build();

Segala sesuatu yang dasar itu sederhana.

Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION