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ű.