Čitanje HTTP odgovora kao niza u Javi

OSTALO Vrh

Upravo sam najavio novo Uči proljeće tečaj, usredotočen na osnove Spring 5 i Spring Boot 2:

>> PROVJERITE TEČAJ Java Top

Upravo sam najavio novo Uči proljeće tečaj, usredotočen na osnove Spring 5 i Spring Boot 2:

>> PROVJERITE TEČAJ

1. Uvod

U ovom uputstvu istražit ćemo nekoliko knjižnica za čitanje tijela HTTP odgovora kao niza u Javi. Od prvih verzija, Java je pružala HttpURLConnection API. To uključuje samo osnovne značajke i poznato je po tome što nije baš vrlo lako za upotrebu.

Izlaskom JDK 11, Java je predstavila novo i poboljšano HttpClient API za rukovanje HTTP komunikacijom. Pokrivat ćemo ove knjižnice i provjerit ćemo neke alternative poput Apache HttpClient i Spring Rest Template.

2. HttpClient

Kao što smo već spomenuli, HttpClient dodan je Javi 11. Omogućuje nam pristup resursima putem mreže. Ali, za razliku od toga HttpURLConnection, HttpClient podržava HTTP / 1.1 i HTTP / 2. Štoviše, to pruža i sinkrone i asinkrone vrste zahtjeva.

HttpClient nudi moderni API s puno fleksibilnosti i moćnim značajkama. Ovaj se API uglavnom sastoji od tri osnovne klase: HttpClient, HttpRequest, i HttpResponse.

HttpResponse opisuje rezultat HttpRequest poziv. HttpResponse nije stvoren izravno i dostupan je kad je tijelo u potpunosti primljeno.

Za čitanje tijela odgovora kao a Niz, prvo ćemo morati stvoriti jednostavne klijentske i zahtjevne objekte:

HttpClient klijent = HttpClient.newHttpClient (); Zahtjev za HttpRequest = HttpRequest.newBuilder () .uri (URI.create (DUMMY_URL)) .build ();

Tada jednostavno koristimo BodyHandlers i nazovite metodu ofString () za povratak odgovora:

HttpResponse odgovor = client.send (zahtjev, HttpResponse.BodyHandlers.ofString ());

3. HttpURLConnection

HttpURLConnection je lagan HTTP klijent koji se koristi za pristup resursima putem HTTP ili HTTPS protokola i omogućuje nam stvaranje InputStream. Jednom kada dobijemo InputStream, možemo ga čitati kao normalnu lokalnu datoteku.

U Javi su glavne klase koje možemo koristiti za pristup Internetu java.net.URL razred i java.net.HttpURLConnection razred. Prvo ćemo upotrijebiti URL klase ukazati na web resurs. Tada mu možemo pristupiti pomoću HttpURLConnection razred.

Da biste tijelo odgovora dobili od a URL kao Niz, trebali bismo prvo stvoriti HttpURLConnection koristeći naš URL:

HttpURLConnection connection = (HttpURLConnection) novi URL (DUMMY_URL) .openConnection ();

The novi URL (DUMMY_URL) .openConnection () vraća a HttpURLConnection. Ovaj nam objekt omogućuje dodavanje zaglavlja ili provjeru koda odgovora.

Dalje, idemo dobiti InputStream od povezanost objekt:

InputStream inputStream = connection.getInputStream ();

Napokon, trebamo pretvoriti InputStream do a Niz.

4. Apač HttpClient

U ovom ćemo odjeljku vidjeti kako se koristi Apache HttpClient za čitanje tijela HTTP odgovora kao niza.

Da bismo koristili ovu knjižnicu, morat ćemo dodati njezinu ovisnost našem projektu Maven:

 org.apache.httpkomponente httpclient 4.5.12 

Možemo dohvatiti i poslati podatke putem CloseableHttpClient razred. Da bismo ga stvorili sa zadanom konfiguracijom, možemo koristiti HttpClients.createDefault ().

CloseableHttpClient pruža an izvršiti način slanja i primanja podataka. Ova metoda koristi parametar tipa HttpUriRequest, koji ima mnogo potklasa, uključujući HttpGet i HttpPost.

Krenimo prvo stvoriti HttpGet objekt:

Zahtjev za HttpGet = novi HttpGet (DUMMY_URL);

Drugo, idemo stvoriti klijenta:

CloseableHttpClient client = HttpClients.createDefault ();

Treće, mi dohvatiti objekt odgovora iz rezultata izvršiti metoda:

CloseableHttpResponse odgovor = client.execute (zahtjev);

Napokon, tijelo odgovora vraćamo po pretvaranje entiteta odgovora u Niz:

HttpEntity entitet = response.getEntity (); Rezultat niza = EntityUtils.toString (entitet);

5. Proljeće RestTemplate

U ovom ćemo odjeljku vidjeti kako se koristi Spring RestTemplate za čitanje tijela HTTP odgovora kao niza.

The RestTemplate klasa je važan alat koji nudi Spring koji nudi jednostavan predložak za izradu HTTP operacija na strani klijenta preko temeljnih knjižnica HTTP klijenta, poput JDK HttpURLConnection, Apači HttpClient, i drugi.

RestTemplate pruža neke korisne metode za stvaranje HTTP zahtjeva i rukovanje odgovorima.

Ovu knjižnicu možemo koristiti dodavanjem nekih ovisnosti u naš projekt Maven:

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

Da bismo poslali web zahtjev i tijelo odgovora vratili kao niz, prvo stvoriti instancu RestTemplate:

RestTemplate restTemplate = novi RestTemplate ();

Drugo, mi dobiti objekt odgovora pozivanjem metode getForObject (), dodajući URL i željenu vrstu odgovora - koristit ćemo String.razred u našem primjeru:

Odgovor niza = restTemplate.getForObject (DUMMY_URL, String.class);

6. Zaključak

U ovom smo članku vidjeli kako koristiti nekoliko knjižnica za čitanje tijela HTTP odgovora kao Niz.

Kao i obično, cjeloviti kôd dostupan je na GitHubu.

OSTALO dno

Upravo sam najavio novo Uči proljeće tečaj, usredotočen na osnove Spring 5 i Spring Boot 2:

>> PROVJERITE TEČAJ Dno Java

Upravo sam najavio novo Uči proljeće tečaj, usredotočen na osnove Spring 5 i Spring Boot 2:

>> PROVJERITE TEČAJ