Læsning af et HTTP-svarorgan som en streng i Java

REST Top

Jeg har lige annonceret det nye Lær foråret kursus med fokus på det grundlæggende i Spring 5 og Spring Boot 2:

>> KONTROLLER KURSEN Java Top

Jeg har lige annonceret det nye Lær foråret kursus med fokus på det grundlæggende i Spring 5 og Spring Boot 2:

>> KONTROLLER KURSEN

1. Introduktion

I denne vejledning udforsker vi flere biblioteker til læsning af et HTTP-responsorgan som en streng i Java. Siden de første versioner leverede Java HttpURLforbindelse API. Dette inkluderer kun grundlæggende funktioner og er kendt for ikke at være meget brugervenligt.

Med udgivelsen af ​​JDK 11 introducerede Java det nye og forbedrede HttpClient API til håndtering af HTTP-kommunikation. Vi dækker disse biblioteker, og vi vil kontrollere nogle alternativer som Apache HttpClient og Spring Rest Template.

2. HttpClient

Som vi nævnte før, HttpClient blev føjet til Java 11. Det giver os adgang til ressourcer via netværket. Men i modsætning til HttpURLforbindelse, HttpClient understøtter HTTP / 1.1 og HTTP / 2. Desuden er det giver både synkron og asynkron anmodningstyper.

HttpClient tilbyder en moderne API med en masse fleksibilitet og kraftfulde funktioner. Hovedsageligt består denne API af tre kerneklasser: HttpClient, HttpForespørgselog HttpResponse.

HttpResponse beskriver resultatet af en HttpForespørgsel opkald. HttpResponse er ikke oprettet direkte og stilles til rådighed, når kroppen er modtaget fuldt ud.

At læse et responsorgan som en Snor, vi bliver først nødt til at oprette enkle klient- og anmodningsobjekter:

HttpClient-klient = HttpClient.newHttpClient (); HttpRequest anmodning = HttpRequest.newBuilder () .uri (URI.create (DUMMY_URL)) .build ();

Derefter bruger vi simpelthen BodyHandlers og kalde metoden ofString () for at returnere svaret:

HttpResponse respons = client.send (anmodning, HttpResponse.BodyHandlers.ofString ());

3. HttpURLforbindelse

HttpURLforbindelse er en let HTTP-klient, der bruges til at få adgang til ressourcer via HTTP- eller HTTPS-protokollen og giver os mulighed for at oprette en InputStream. Når vi først har fået InputStream, vi kan læse det som en normal lokal fil.

I Java er de vigtigste klasser, vi kan bruge til at få adgang til Internettet java.net.URL klasse og java.net.HttpURLforbindelse klasse. Først bruger vi URL klasse for at pege på en webressource. Derefter kan vi få adgang til det ved hjælp af HttpURLforbindelse klasse.

For at få svarorganet fra en URL som en Snor, skal vi først oprette en HttpURLforbindelse bruger vores URL:

HttpURLConnection-forbindelse = (HttpURLConnection) ny URL (DUMMY_URL). OpenConnection ();

Det ny URL (DUMMY_URL). openConnection () returnerer a HttpURLforbindelse. Dette objekt giver os mulighed for at tilføje overskrifter eller kontrollere svarkoden.

Lad os derefter Hent InputStream fra forbindelse objekt:

InputStream inputStream = forbindelse.getInputStream ();

Endelig skal vi konvertere InputStream til en Snor.

4. Apache HttpClient

I dette afsnit vil vi se, hvordan du bruger Apache HttpClient til læsning af et HTTP-svartekst som en streng.

For at bruge dette bibliotek skal vi tilføje dets afhængighed til vores Maven-projekt:

 org.apache.httpkomponenter httpclient 4.5.12 

Vi kan hente og sende data via LukbarHttpClient klasse. For at oprette en forekomst af den med standardkonfiguration kan vi bruge HttpClients.createDefault ().

LukbarHttpClient giver en udføre metode til at sende og modtage data. Denne metode bruger en parameter af typen HttpUriRequest, som har mange underklasser inklusive HttpGet og HttpPost.

Lad os først oprette en HttpGet objekt:

HttpGet anmodning = ny HttpGet (DUMMY_URL);

For det andet, lad os oprette klienten:

CloseableHttpClient-klient = HttpClients.createDefault ();

For det tredje, vi Hent svarobjektet fra resultatet af udføre metode:

CloseableHttpResponse respons = client.execute (anmodning);

Endelig returnerer vi svarorganet med konvertering af responsenheden til en Snor:

HttpEntity-enhed = respons.getEntity (); Strengresultat = EntityUtils.toString (enhed);

5. Forår RestTemplate

I dette afsnit vil vi se, hvordan du bruger Spring RestTemplate til læsning af et HTTP-svartekst som en streng.

Det RestTemplate klasse er et vigtigt værktøj fra Spring, der tilbyder en simpel skabelon til udførelse af HTTP-operationer på klientsiden over underliggende HTTP-klientbiblioteker såsom JDK HttpURLforbindelse, Apache HttpClient, og andre.

RestTemplate indeholder nogle nyttige metoder til oprettelse af HTTP-anmodninger og håndtering af svar.

Vi kan bruge dette bibliotek ved først at tilføje nogle afhængigheder til vores Maven-projekt:

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

For at lave en webanmodning og returnere svarteksten som en streng, lad os først oprette en forekomst af RestTemplate:

RestTemplate restTemplate = ny RestTemplate ();

For det andet, vi få svarobjektet ved at kalde metoden getForObject (), videresender URL og ønsket svarstype - vi bruger Streng.klasse i vores eksempel:

Strengrespons = restTemplate.getForObject (DUMMY_URL, String.class);

6. Konklusion

I denne artikel har vi set, hvordan man bruger flere biblioteker til at læse et HTTP-responsorgan som en Snor.

Som sædvanlig er den komplette kode tilgængelig på GitHub.

REST bunden

Jeg har lige annonceret det nye Lær foråret kursus med fokus på det grundlæggende i Spring 5 og Spring Boot 2:

>> KONTROLLER KURSEN Java bund

Jeg har lige annonceret det nye Lær foråret kursus med fokus på det grundlæggende i Spring 5 og Spring Boot 2:

>> KONTROLLER KURSEN

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