Lese et HTTP-svarorgan som en streng i Java

REST Topp

Jeg kunngjorde nettopp det nye Lær våren kurs, med fokus på det grunnleggende i vår 5 og vårstøvel 2:

>> KONTROLLER KURSET Java Top

Jeg kunngjorde nettopp det nye Lær våren kurs, med fokus på det grunnleggende i vår 5 og vårstøvel 2:

>> KONTROLLER KURSET

1. Introduksjon

I denne opplæringen vil vi utforske flere biblioteker for å lese et HTTP-responsorgan som en streng i Java. Siden de første versjonene ga Java den HttpURLConnection API. Dette inkluderer bare grunnleggende funksjoner og er kjent for ikke å være veldig brukervennlig.

Med utgivelsen av JDK 11 introduserte Java det nye og forbedrede HttpClient API for å håndtere HTTP-kommunikasjon. Vi vil dekke disse bibliotekene, og vi vil sjekke noen alternativer som Apache HttpClient og Spring Rest Template.

2. HttpClient

Som vi nevnte før, HttpClient ble lagt til Java 11. Det gir oss tilgang til ressurser over nettverket. Men i motsetning til HttpURLConnection, HttpClient støtter HTTP / 1.1 og HTTP / 2. Dessuten, det gir både synkrone og asynkrone forespørselstyper.

HttpClient tilbyr en moderne API med mye fleksibilitet og kraftige funksjoner. Hovedsakelig består denne API av tre kjerneklasser: HttpClient, HttpForespørsel, og HttpResponse.

HttpResponse beskriver resultatet av en HttpForespørsel anrop. HttpResponse er ikke opprettet direkte og blir gjort tilgjengelig når kroppen er blitt fullstendig mottatt.

Å lese et responsorgan som en Streng, Vi trenger først å lage enkle klienter og be om objekter:

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

Så bruker vi bare BodyHandlers og ring metoden ofString () for å returnere svaret:

HttpResponse respons = client.send (forespørsel, HttpResponse.BodyHandlers.ofString ());

3. HttpURLConnection

HttpURLConnection er en lett HTTP-klient som brukes til å få tilgang til ressurser via HTTP- eller HTTPS-protokollen, og lar oss lage en InputStream. Når vi får tak i InputStream, vi kan lese den som en vanlig lokal fil.

I Java er hovedklassene vi kan bruke for å få tilgang til Internett java.net.URL klasse og java.net.HttpURLConnection klasse. Først bruker vi URL klasse for å peke på en nettressurs. Deretter kan vi få tilgang til det ved å bruke HttpURLConnection klasse.

For å få responsorganet fra en URL som en String, burde vi først lage en HttpURLConnection bruker vår URL:

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

De ny URL (DUMMY_URL) .openConnection () returnerer a HttpURLConnection. Dette objektet lar oss legge til overskrifter eller sjekke responskoden.

Neste, la oss Hent InputStream fra forbindelse gjenstand:

InputStream inputStream = connection.getInputStream ();

Til slutt må vi konvertere InputStream til en String.

4. Apache HttpClient

I denne delen ser vi hvordan du bruker Apache HttpClient for å lese et HTTP-svartekst som en streng.

For å bruke dette biblioteket, må vi legge til avhengighet til vårt Maven-prosjekt:

 org.apache.httpkomponenter httpclient 4.5.12 

Vi kan hente og sende data via LukkbarHttpClient klasse. For å opprette en forekomst av den med standardkonfigurasjon kan vi bruke HttpClients.createDefault ().

LukkbarHttpClient gir en henrette metode for å sende og motta data. Denne metoden bruker en parameter av typen HttpUriRequest, som har mange underklasser inkludert HttpGet og HttpPost.

La oss først lage en HttpGet gjenstand:

HttpGet forespørsel = ny HttpGet (DUMMY_URL);

For det andre, la oss opprette klienten:

CloseableHttpClient client = HttpClients.createDefault ();

For det tredje, vi hente responsobjektet fra resultatet av henrette metode:

CloseableHttpResponse respons = client.execute (forespørsel);

Til slutt returnerer vi responsorganet med konvertere responsenheten til en String:

HttpEntity-enhet = respons.getEntity (); String result = EntityUtils.toString (entity);

5. Vår RestTemplate

I denne delen vil vi se hvordan du bruker våren RestTemplate for å lese et HTTP-svartekst som en streng.

De RestTemplate klasse er et viktig verktøy som tilbys av Spring en enkel mal for å utføre HTTP-operasjoner på klientsiden over underliggende HTTP-klientbiblioteker som JDK HttpURLConnection, Apache HttpClient, og andre.

RestTemplate gir noen nyttige metoder for å lage HTTP-forespørsler og håndtering av svar.

Vi kan bruke dette biblioteket ved først å legge til noen avhengigheter i vårt Maven-prosjekt:

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

For å komme med en nettforespørsel og returnere svarteksten som en streng, la oss først opprette en forekomst av RestTemplate:

RestTemplate restTemplate = ny RestTemplate ();

For det andre, vi få svarobjektet ved å ringe metoden getForObject (), sender inn URL og ønsket responstype - vi bruker Strengklasse i vårt eksempel:

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

6. Konklusjon

I denne artikkelen har vi sett hvordan du kan bruke flere biblioteker til å lese et HTTP-responsorgan som en String.

Som vanlig er den komplette koden tilgjengelig på GitHub.

HVILLE bunnen

Jeg kunngjorde nettopp det nye Lær våren kurs, med fokus på det grunnleggende i vår 5 og vårstøvel 2:

>> KONTROLLER KURSET Java bunn

Jeg kunngjorde nettopp det nye Lær våren kurs, med fokus på det grunnleggende i vår 5 og vårstøvel 2:

>> KONTROLLER KURSET

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