JavaRush /Kurslar /All lectures for UZ purposes /HttpRequest bilan so'rov yaratish

HttpRequest bilan so'rov yaratish

All lectures for UZ purposes
Daraja, Dars
Mavjud

newBuilder(), build() metodlari

HttpRequеst klassi http-requestni tasvirlash uchun ishlatiladi, bu uning nomidan ham tushunarli. Ushbu obyekt o'zi hech narsa qilmaydi, lekin http-so'rov haqida turli xil ma'lumotlarni o'z ichiga oladi. Shuning uchun, sen allaqachon taxmin qilganingdek, uni yaratish uchun ham Builder shablonidan foydalaniladi.


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

Qaerda newBuilder() va build() metodlari orasida, HttpRequest obyektini yaratish uchun barcha metodlarni chaqirish kerak.

Eng oddiy so'rov quyidagi ko'rinishda bo'ladi:


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

HttpRequest klassining barcha metodlarini rasmiy hujjatlarda topishingiz mumkin.

Keyinchalik biz ularning eng ommaboplarini ko'rib chiqamiz.

uri() metodi

uri() metodi orqali http-so'rov yuboriladigan URI (yoki URL) ni belgilash mumkin. Misol:


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

Aytgancha, ushbu kodni biroz qisqaroq yozish mumkin, URI ni to'g'ridan-to'g'ri newBuilder() metodiga uzatish orqali:


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

Muhim! URI ni ikki usulda yaratish mumkin:

  • new URI(String)
  • URI.create(String)

Ikkinchi usul afzalroq. Birinchi usul, afsuski, yaxshi emas, chunki URI konstruktori quyidagicha e'lon qilingan public URI(String str) throws URISyntaxException, va URISyntaxException — bu checked-istisno.

GET(), POST(), PUT(), DELETE() metodlari

Http-so'rov metodini quyidagi metodlar orqali belgilash mumkin:

  • GET()
  • POST()
  • PUT()
  • DELETE()

Oddiy GET-so'rov quyidagicha ko'rinishda bo'ladi:


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

version() metodi

HTTP-protokol versiyasini ham belgilash mumkin. Ularning faqat 2 variant mavjud:

  • HttpClient.Version.HTTP_1_1
  • HttpClient.Version.HTTP_2

Faraz qilaylik, sen HTTP/2 protokoli bo'yicha so'rov yaratmoqchisan, unda sen quyidagini yozishing kerak bo'ladi:


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

Juda sodda, to'g'rimi? :)

timeout() metodi

So'rovning bajarilishi vaqti ham belgilanishi mumkin. Agar u o'tib ketsa va so'rov bajarilmasa, HttpTimeoutException tashlanadi.

Vaqtning o'zi Java DateTime API dan Duration obyekti yordamida belgilanadi. Misol:


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

Ushbu metodning mavjudligi HttpClient va HttpRequest klasslarining juda turli-tuman vazifalarni hal qilish qobiliyatini ko'rsatadi. Tasavvur qiling, siz so'rovni bajarayapsiz, lekin tarmoqda nimadir yuz berdi va u 30 soniya davom etdi. To'g'ri, darhol istisno olish va unga to'g'ri javob berish foydaliroq bo'ladi.

header() metodi

Har qanday so'rovga cheksiz sonli headerlar qo'shilishi mumkin. Va buni hamma narsalar kabi sodda qilish imkoniyati bor. Buning uchun maxsus metod — header() mavjud. Misol:


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

Bir nechta headerlarni bir vaqtning o'zida belgilash uchun yana bir alternativ usul mavjud. Bu, agar sen, masalan, headerlar ro'yxatini massivga aylantirgan bo'lsang, foydali bo'lishi mumkin:


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

Hammasi elementar oddiy.

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