metódusok newBuilder(), build()

A HttpRequest osztály a http-kérés leírására szolgál, ami a nevéből könnyen érthető. Ez az objektum önmagában nem csinál semmit, csak különféle információkat tartalmaz a http kérésről. Ezért, ahogy valószínűleg már sejti, a Builder sablont is használják a létrehozásához.

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

Ahol a newBuilder() és build() metódusok hívásai között meg kell hívni az összes metódust egy objektum létrehozásáhozHttpRequest.

Egy egyszerű kérés példája így néz ki:

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

A HttpRequest osztály összes metódusa megtalálható a hivatalos dokumentációban található hivatkozáson .

Ezután elemezzük a legnépszerűbbeket.

uri() metódus

Az uri() metódussal beállíthatja azt az URI-t (vagy URL-t), amelyre a http kérés elküldésre kerül. Példa:

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

Egyébként ezt a kódot kicsit lerövidítheti, ha az URI-t közvetlenül a newBuilder() metódusnak adja át :

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

Fontos! Az URI kétféleképpen hozható létre:

  • newURI(karakterlánc)
  • URI.create(karakterlánc)

A második mód előnyösebb. Az első mód sajnos nem túl jó, mert az URI konstruktor nyilvános URI-ként van deklarálva (String str) URISyntaxException -t dob , az URISyntaxException pedig ellenőrzött kivétel.

Módszerek: GET(), POST(), PUT(), DELETE()

A http kérés metódusát a következő módszerekkel állíthatja be:

  • KAP()
  • POST()
  • PUT()
  • TÖRÖL()

Így nézne ki egy egyszerű GET-kérés:

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

version() metódus

Beállíthatja a HTTP protokoll verzióját is. Csak 2 lehetőség van:

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

Tegyük fel, hogy HTTP/2 protokoll használatával szeretne kérést létrehozni, akkor a következőt kell írnia:

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

Nagyon egyszerű, nem? :)

timeout() metódus

Beállíthatja a lekérdezés végrehajtási idejét is. Ha átmegy, és a kérés soha nem fejeződik be, a rendszer egy HttpTimeoutException kivételt dob ​​fel .

Maga az idő beállítása az objektum segítségével történikidőtartamaa Java DateTime API-ból. Példa:

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

A metódus jelenléte azt mutatja, hogy a HttpClient és a HttpRequest osztályok különféle feladatokat tudnak végrehajtani. Képzelje el, hogy végrehajt egy kérést, és valami történt a hálózattal, és ez 30 másodpercig tartott. Sokkal hasznosabb azonnal megkapni a kivételt és helyesen reagálni rá.

header() metódus

Bármely kéréshez tetszőleges számú fejlécet is hozzáadhat. És ez ugyanolyan egyszerű, mint bármi más. Erre van egy speciális metódus - header() . Példa:

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

Van egy másik alternatív módja is, hogy egyszerre több fejlécet állítson be. Hasznos lehet, ha például egy fejléclistát tömbbé alakított át:

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

Minden elemi egyszerű.