metode newBuilder(), build()

Clasa HttpRequest este folosită pentru a descrie o solicitare http, care este ușor de înțeles din numele său. Acest obiect nu face nimic de la sine, doar conține diverse informații despre cererea http. Prin urmare, după cum probabil ghiciți deja, șablonul Builder este, de asemenea, folosit pentru a-l crea.

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

Între apelurile la metodele newBuilder() și build() trebuie să apelați toate metodele pentru a construi un obiectHttpRequest.

Un exemplu de cerere simplă arată astfel:

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

Puteți găsi toate metodele clasei HttpRequest la linkul din documentația oficială .

Și apoi le vom analiza pe cele mai populare dintre ele.

uri() Metoda

Folosind metoda uri() , puteți seta URI-ul (sau URL-ul) la care va fi trimisă solicitarea http. Exemplu:

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

Apropo, puteți face acest cod puțin mai scurt trecând URI-ul direct la metoda newBuilder() :

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

Important! Un URI poate fi creat în două moduri:

  • newURI(șir)
  • URI.create(Șir)

A doua cale este de preferat. Prima modalitate, din păcate, nu este foarte bună, deoarece constructorul URI este declarat ca URI public(String str) aruncă URISyntaxException , iar URISyntaxException este o excepție verificată.

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

Puteți seta metoda de solicitare http folosind următoarele metode:

  • OBȚINE()
  • POST()
  • A PUNE()
  • ȘTERGE()

Iată cum ar arăta o solicitare GET simplă:

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

metoda version().

De asemenea, puteți seta versiunea protocolului HTTP. Există doar 2 opțiuni:

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

Să presupunem că doriți să creați o solicitare folosind protocolul HTTP/2, atunci va trebui să scrieți:

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

Foarte simplu, nu-i așa? :)

metoda timeout().

De asemenea, puteți seta timpul de execuție a interogării. Dacă trece și cererea nu este niciodată finalizată, va fi lansată o excepție HttpTimeoutException .

Ora în sine este setată folosind obiectulduratădin API-ul Java DateTime. Exemplu:

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

Prezența acestei metode arată că clasele HttpClient și HttpRequest pot efectua o varietate de sarcini. Imaginați-vă că executați o solicitare și s-a întâmplat ceva în rețea și a durat 30 de secunde. Este mult mai util să primiți imediat o excepție și să reacționați corect la ea.

metoda header().

De asemenea, puteți adăuga orice număr de anteturi la orice solicitare. Și este la fel de ușor de făcut ca orice altceva. Există o metodă specială pentru aceasta - header() . Exemplu:

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

Există o altă modalitate alternativă de a seta mai multe anteturi simultan. Poate fi util dacă, de exemplu, ați convertit o listă de anteturi într-o matrice:

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

Totul elementar este simplu.