CodeGym/Kursy Java/Moduł 3/Wykonywanie żądania za pomocą HttpRequest

Wykonywanie żądania za pomocą HttpRequest

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
  • Popularne
  • Najnowsze
  • Najstarsze
Musisz się zalogować, aby dodać komentarz
Ta strona nie ma jeszcze żadnych komentarzy