Čítanie tela odpovede HTTP ako reťazca v Jave

ODPOČINOK Najlepšie

Práve som oznámil nové Naučte sa jar kurz zameraný na základy jari 5 a Spring Boot 2:

>> SKONTROLUJTE KURZ Java Top

Práve som oznámil nové Naučte sa jar kurz zameraný na základy jari 5 a Spring Boot 2:

>> SKONTROLUJTE KURZ

1. Úvod

V tomto tutoriále preskúmame niekoľko knižníc na čítanie tela odpovede HTTP ako reťazca v Jave. Od prvých verzií poskytovala Java HttpURLConnection API. Zahŕňa iba základné funkcie a je známe, že nie je veľmi užívateľsky príjemný.

S vydaním JDK 11 predstavila Java nové a vylepšené HttpClient API na spracovanie komunikácie HTTP. Tieto knižnice pokryjeme a skontrolujeme niektoré alternatívy, ako napríklad Apache HttpClient a Spring Rest Template.

2. HttpClient

Ako sme už spomínali, HttpClient bol pridaný do Java 11. Umožňuje nám prístup k zdrojom cez sieť. Ale na rozdiel od HttpURLConnection, HttpClient podporuje HTTP / 1.1 a HTTP / 2. Navyše poskytuje synchrónne aj asynchrónne typy požiadaviek.

HttpClient ponúka moderné API s veľkou flexibilitou a výkonnými funkciami. Toto API sa hlavne skladá z troch základných tried: HttpClient, HttpRequesta HttpResponse.

HttpResponse popisuje výsledok an HttpRequest hovor. HttpResponse sa nevytvára priamo a sprístupňuje sa, keď je telo úplne prijaté.

Čítať telo odpovede ako a Reťazec, najskôr budeme musieť vytvoriť jednoduché objekty klienta a požiadavky:

HttpClient client = HttpClient.newHttpClient (); HttpRequest request = HttpRequest.newBuilder () .uri (URI.create (DUMMY_URL)) .build ();

Potom jednoducho použijeme BodyHandlers a zavolajte metódu ofString () vrátiť odpoveď:

HttpResponse response = client.send (požiadavka, HttpResponse.BodyHandlers.ofString ());

3. HttpURLConnection

HttpURLConnection je ľahký klient HTTP, ktorý sa používa na prístup k zdrojom prostredníctvom protokolu HTTP alebo HTTPS a umožňuje nám vytvoriť server InputStream. Akonáhle získame InputStream, môžeme to čítať ako normálny lokálny súbor.

V Jave sú hlavnými triedami, ktoré môžeme použiť na prístup na internet, java.net.URL triedy a java.net.HttpURLConnection trieda. Najskôr použijeme URL triedy, aby ukazovali na webový zdroj. Potom k nej môžeme získať prístup pomocou HttpURLConnection trieda.

Ak chcete získať orgán odpovede z a URL ako String, mali by sme najskôr vytvoriť HttpURLConnection pomocou nášho URL:

HttpURLConnection connection = (HttpURLConnection) nová URL (DUMMY_URL) .opConnection ();

The nová URL (DUMMY_URL) .openConnection () vracia a HttpURLConnection. Tento objekt nám umožňuje pridať hlavičky alebo skontrolovať kód odpovede.

Ďalej, poďme dostať InputStream z spojenie objekt:

InputStream inputStream = connection.getInputStream ();

Nakoniec musíme previesť InputStream do a String.

4. Apache HttpClient

V tejto časti uvidíme, ako používať Apache HttpClient na čítanie tela odpovede HTTP ako reťazca.

Ak chcete používať túto knižnicu, budeme musieť do projektu Maven pridať jej závislosť:

 org.apache.httpcomponents httpclient 4.5.12 

Môžeme získavať a odosielať údaje prostredníctvom CloseableHttpClient trieda. Na vytvorenie inštancie s predvolenou konfiguráciou môžeme použiť HttpClients.createDefault ().

CloseableHttpClient poskytuje vykonať spôsob odosielania a prijímania údajov. Táto metóda používa parameter typu HttpUriRequest, ktorý má veľa podtried vrátane HttpGet a HttpPost.

Poďme najskôr vytvoriť HttpGet objekt:

HttpGet požiadavka = nový HttpGet (DUMMY_URL);

Po druhé, poďme vytvoriť klienta:

CloseableHttpClient client = HttpClients.createDefault ();

Po tretie, my načítať objekt odpovede z výsledku vykonať metóda:

CloseableHttpResponse response = client.execute (požiadavka);

Nakoniec vrátime telo odpovede o prevod entity odpovede na a String:

HttpEntity entity = response.getEntity (); Výsledok reťazca = EntityUtils.toString (entita);

5. Jar RestTemplate

V tejto časti uvidíme, ako používať Spring RestTemplate na čítanie tela odpovede HTTP ako reťazca.

The RestTemplate triedy je základným nástrojom poskytovaným spoločnosťou Spring, ktorá ponúka jednoduchá šablóna na vykonávanie operácií HTTP na strane klienta nad základnými klientskými knižnicami HTTP, ako je JDK HttpURLConnection, Apache HttpClient, a ďalšie.

RestTemplate poskytuje niektoré užitočné metódy na vytváranie požiadaviek HTTP a spracovanie odpovedí.

Túto knižnicu môžeme použiť tak, že najskôr do projektu Maven pridáme nejaké závislosti:

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

Ak chcete vytvoriť webovú požiadavku a vrátiť telo odpovede ako reťazec, poďme najskôr vytvoriť inštanciu RestTemplate:

RestTemplate restTemplate = nový RestTemplate ();

Po druhé, my získajte objekt odpovede volaním metódy getForObject (), odovzdanie adresy URL a požadovaného typu odpovede - použijeme Reťazec.trieda v našom príklade:

Reťazcová odpoveď = restTemplate.getForObject (DUMMY_URL, String.class);

6. Záver

V tomto článku sme videli, ako používať niekoľko knižníc na čítanie tela odpovede HTTP ako String.

Celý kód je ako obvykle k dispozícii na serveri GitHub.

REST spodok

Práve som oznámil nové Naučte sa jar kurz zameraný na základy jari 5 a Spring Boot 2:

>> SKONTROLUJTE KURZ Java dole

Práve som oznámil nové Naučte sa jar kurz zameraný na základy jari 5 a Spring Boot 2:

>> SKONTROLUJTE KURZ

$config[zx-auto] not found$config[zx-overlay] not found