CodeGym /Kursy /All lectures for PL purposes /Wykonywanie żądania za pomocą HttpRequest

Wykonywanie żądania za pomocą HttpRequest

All lectures for PL purposes
Poziom 1, Lekcja 447
Dostępny

metody newBuilder(), build()

Klasa HttpRequest jest używana do opisania żądania http, które łatwo rozpoznać po nazwie. Ten obiekt sam w sobie nic nie robi, po prostu zawiera różne informacje o żądaniu http. W związku z tym, jak już zapewne się domyślasz, szablon Builder służy również do jego tworzenia.

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

Gdzie między wywołaniami metod newBuilder() i build() musisz wywołać wszystkie metody, aby skonstruować obiektHttpRequest.

Przykład prostego żądania wygląda następująco:

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

Wszystkie metody klasy HttpRequest można znaleźć pod linkiem w oficjalnej dokumentacji .

A potem przeanalizujemy najpopularniejsze z nich.

metoda uri().

Za pomocą metody uri() możesz ustawić URI (lub adres URL), na który zostanie wysłane żądanie http. Przykład:

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

Nawiasem mówiąc, możesz nieco skrócić ten kod, przekazując URI bezpośrednio do metody newBuilder() :

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

Ważny! Identyfikator URI można utworzyć na dwa sposoby:

  • nowy URI(ciąg znaków)
  • URI.create(String)

Preferowany jest drugi sposób. Pierwszy sposób niestety nie jest zbyt dobry, ponieważ konstruktor URI jest zadeklarowany jako public URI(String str) rzuca URISyntaxException , a URISyntaxException jest sprawdzanym wyjątkiem.

Metody GET(), POST(), PUT(), DELETE()

Metodę żądania HTTP można ustawić za pomocą następujących metod:

  • DOSTAWAĆ()
  • POST()
  • UMIEŚCIĆ()
  • USUWAĆ()

Oto jak wyglądałoby proste żądanie GET:

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

metoda wersja().

Możesz także ustawić wersję protokołu HTTP. Są tylko 2 opcje:

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

Powiedzmy, że chcesz utworzyć żądanie przy użyciu protokołu HTTP/2, wtedy będziesz musiał napisać:

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

Bardzo proste, prawda? :)

metoda timeout().

Możesz także ustawić czas wykonania zapytania. Jeśli się powiedzie, a żądanie nigdy nie zostanie zakończone, zostanie zgłoszony wyjątek HttpTimeoutException .

Sam czas jest ustawiany za pomocą obiektuczas trwaniaz API Java DateTime. Przykład:

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

Obecność tej metody pokazuje, że klasy HttpClient i HttpRequest mogą wykonywać różnorodne zadania. Wyobraź sobie, że wykonujesz żądanie i coś stało się z siecią i trwało to 30 sekund. O wiele bardziej przydatne jest natychmiastowe otrzymanie wyjątku i prawidłowa reakcja na niego.

metoda header().

Możesz także dodać dowolną liczbę nagłówków do dowolnego żądania. I jest to tak proste, jak wszystko inne. Jest na to specjalna metoda - header() . Przykład:

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

Istnieje inny alternatywny sposób ustawienia wielu nagłówków jednocześnie. Może się przydać, jeśli na przykład przekonwertowałeś listę nagłówków na tablicę:

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

Wszystko elementarne jest proste.

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