CodeGym/Java курс/Модул 3/Правене на заявка с HttpRequest

Правене на заявка с HttpRequest

На разположение

методи newBuilder(), build()

Класът HttpRequest се използва за описание на http-заявка, която е лесна за разбиране от нейното име. Този обект не прави нищо сам по себе си, той просто съдържа различна информация за http заявката. Следователно, Howто вероятно вече се досещате, шаблонът Builder също се използва за създаването му.

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

Когато между извикванията на методите newBuilder() и build() трябва да извикате всички методи за конструиране на обектHttpRequest.

Пример за проста заявка изглежда така:

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

Можете да намерите всички методи на класа HttpRequest на връзката в официалната documentация .

И тогава ще анализираме най-популярните от тях.

uri() Метод

С помощта на метода uri() можете да зададете URI (or URL), до който ще бъде изпратена http заявката. Пример:

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

Между другото, можете да направите този code малко по-кратък, като подадете URI директно на метода newBuilder() :

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

важно! URI може да бъде създаден по два начина:

  • newURI(низ)
  • URI.create(низ)

Вторият начин е за предпочитане. Първият начин, за съжаление, не е много добър, защото URI конструкторът е деклариран като public URI(String str) хвърля URISyntaxException , а URISyntaxException е проверено изключение.

Методи GET(), POST(), PUT(), DELETE()

Можете да зададете метода на http заявка, като използвате следните методи:

  • GET()
  • POST()
  • СЛАГАМ()
  • ИЗТРИЙ()

Ето How би изглеждала проста GET заявка:

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

метод version().

Можете също да зададете versionта на HTTP протокола. Има само 2 опции:

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

Да приемем, че искате да създадете заявка, използвайки протокола HTTP/2, тогава ще трябва да напишете:

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

Много просто, нали? :)

метод timeout().

Можете също да зададете времето за изпълнение на заявката. Ако премине и заявката никога не бъде завършена, ще бъде хвърлено HttpTimeoutException .

Самото време се задава с помощта на обектапродължителностот Java DateTime API. Пример:

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

Наличието на този метод показва, че класовете HttpClient и HttpRequest могат да изпълняват различни задачи. Представете си, че изпълнявате заявка и нещо се е случило с мрежата и е продължило 30 секунди. Много по-полезно е веднага да получите изключение и да реагирате правилно на него.

метод header().

Можете също да добавите произволен брой заглавки към всяка заявка. И е толкова лесно да се направи, колкото всичко друго. Има специален метод за това - header() . Пример:

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

Има друг алтернативен начин за задаване на много заглавки наведнъж. Може да е полезно, ако например сте преобразували списък със заглавки в масив:

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

Всичко елементарно е просто.

Коментари
  • Популярен
  • Нов
  • Стар
Трябва да сте влезли, за да оставите коментар
Тази страница все още няма коментари