A HTTP-válasz törzsének elolvasása karakterláncként a Java-ban

REST felső

Most jelentettem be az újat Tanulj tavaszt tanfolyam, amelynek középpontjában az 5. tavasz és a tavaszi bakancs 2 alapjai állnak:

>> ELLENŐRIZZE A FOLYAMATOT Java Top

Most jelentettem be az újat Tanulj tavaszt tanfolyam, amelynek középpontjában az 5. tavasz és a tavaszi bakancs 2 alapjai állnak:

>> ELLENŐRIZZE A FOLYAMATOT

1. Bemutatkozás

Ebben az oktatóanyagban több könyvtárat fogunk felfedezni, hogy a HTTP választestet karaktersorozatként olvashassuk a Java-ban. Az első verziók óta a Java biztosította a HttpURLConnection API. Ez csak az alapvető funkciókat tartalmazza, és arról ismert, hogy nem túl felhasználóbarát.

A JDK 11 megjelenésével a Java bemutatta az újat és a továbbfejlesztettet HttpClient API a HTTP kommunikáció kezelésére. Ezekkel a könyvtárakkal foglalkozunk, és megvizsgálunk néhány alternatívát, mint például az Apache HttpClient és a Spring Rest Template.

2. HttpClient

Mint korábban említettük, HttpClient hozzá lett adva a Java 11-hez. Ez lehetővé teszi számunkra, hogy a hálózaton keresztül hozzáférjünk az erőforrásokhoz. De ellentétben HttpURLConnection, HttpClient támogatja a HTTP / 1.1 és a HTTP / 2 fájlokat. Sőt, azt is szinkron és aszinkron kéréstípusokat egyaránt biztosít.

HttpClient modern API-t kínál, sok rugalmassággal és hatékony funkciókkal. Ez az API főleg három fő osztályból áll: HttpClient, HttpRequest, és HttpResponse.

HttpResponse leírja az an eredményét HttpRequest hívás. HttpResponse nem közvetlenül jön létre, és akkor válik elérhetővé, amikor a testet teljesen befogadták.

Választörzs olvasása a Húr, előbb egyszerű kliens- és kérelemobjektumokat kell létrehoznunk:

HttpClient kliens = HttpClient.newHttpClient (); HttpRequest kérés = HttpRequest.newBuilder () .uri (URI.create (DUMMY_URL)) .build ();

Ezután egyszerűen használjuk BodyHandlers és hívja meg a módszert ofString () a válasz visszaadásához:

HttpResponse response = client.send (kérés, HttpResponse.BodyHandlers.ofString ());

3. HttpURLConnection

HttpURLConnection egy könnyű HTTP kliens, amelyet az erőforrások elérésére használnak a HTTP vagy HTTPS protokollon keresztül, és lehetővé teszi számunkra, hogy létrehozzunk egy InputStream. Miután megszereztük a InputStream, olvashatjuk, mint egy normális helyi fájlt.

A Java-ban a fő osztályok, amelyekkel elérhetjük az internetet, a java.net.URL osztály és a java.net.HttpURLConnection osztály. Először a URL osztály, hogy mutasson egy webes erőforrásra. Ezután a HttpURLConnection osztály.

Ahhoz, hogy a válasz test a URL mint a Húr, először nekünk kellene hozzon létre egy HttpURLConnection a mi felhasználásával URL:

HttpURLConnection connection = (HttpURLConnection) új URL (DUMMY_URL) .openConnection ();

A új URL (DUMMY_URL) .openConnection () visszatér a HttpURLConnection. Ez az objektum lehetővé teszi számunkra a fejlécek hozzáadását vagy a válaszkód ellenőrzését.

Ezután menjünk szerezd meg a InputStream tól kapcsolat tárgy:

InputStream inputStream = connection.getInputStream ();

Végül meg kell konvertálja a InputStream a Húr.

4. Apache HttpClient

Ebben a szakaszban megtudjuk, hogyan kell használni az Apache-t HttpClient a HTTP választest stringként történő olvasásához.

A könyvtár használatához hozzá kell adnunk a függőségét a Maven projektünkhöz:

 org.apache.httpcomponents httpclient 4.5.12 

Tudunk adatok lekérése és elküldése a CloseableHttpClient osztály. Alapértelmezett konfigurációjú példány létrehozásához használhatjuk a HttpClients.createDefault ().

CloseableHttpClient biztosít egy végrehajtani módszer az adatok küldésére és fogadására. Ez a módszer egy típusú paramétert használ HttpUriRequest, amelynek számos alosztálya van, beleértve HttpGet és HttpPost.

Nézzük először hozzon létre egy HttpGet tárgy:

HttpGet kérés = új HttpGet (DUMMY_URL);

Másodszor, menjünk hozza létre az ügyfelet:

CloseableHttpClient kliens = HttpClients.createDefault ();

Harmadszor, mi beolvassa a válaszobjektumot eredményétől végrehajtani módszer:

CloseableHttpResponse response = client.execute (kérés);

Végül visszaadjuk a válasz testet a válasz entitás átalakítása a Húr:

HttpEntity entitás = response.getEntity (); Karakterlánc eredménye = EntityUtils.toString (entitás);

5. Tavasz RestTemplate

Ebben a részben megtudjuk, hogyan kell használni a Spring-et RestTemplate a HTTP választest stringként történő olvasásához.

A RestTemplate osztály a Spring által biztosított alapvető eszköz, amely kínál egyszerű sablon kliensoldali HTTP-műveletek elvégzéséhez az alapul szolgáló HTTP kliens könyvtárak, például a JDK felett HttpURLConnection, Apache HttpClient, és mások.

RestTemplate hasznos módszereket kínál a HTTP kérések létrehozására és a válaszok kezelésére.

Ezt a könyvtárat úgy használhatjuk, hogy először hozzáadunk néhány függőséget a Maven projektünkhöz:

 org.springframework.boot spring-boot-starter-web $ {spring-boot.version} org.springframework.boot spring-boot-starter-test $ {spring-boot.version} teszt 

Webkéréshez és a válasz törzsének karakterláncként való visszaadásához először is tegyük létrehoz egy példányát RestTemplate:

RestTemplate restTemplate = új RestTemplate ();

Másodszor, mi kapja meg a válaszobjektumot a metódus meghívásával getForObject (), adja meg az URL-t és a kívánt válasz típusát - használjuk Karakterlánc.osztály példánkban:

Karakterlánc-válasz = restTemplate.getForObject (DUMMY_URL, String.class);

6. Következtetés

Ebben a cikkben azt láttuk, hogy hogyan lehet több könyvtárat használni a HTTP választörzs mint a Húr.

Szokás szerint a teljes kód elérhető a GitHubon.

REST alsó

Most jelentettem be az újat Tanulj tavaszt tanfolyam, amelynek középpontjában az 5. tavasz és a tavaszi bakancs 2 alapjai állnak:

>> ELLENŐRIZZE A FOLYAMATOT Java alsó

Most jelentettem be az újat Tanulj tavaszt tanfolyam, amelynek középpontjában az 5. tavasz és a tavaszi bakancs 2 alapjai állnak:

>> ELLENŐRIZZE A FOLYAMATOT