A HTTP-válasz törzsének elolvasása karakterláncként a Java-ban
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 TopMost 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 FOLYAMATOT1. 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ó