methoden newBuilder(), build()
De klasse HttpRequest wordt gebruikt om een http-request te beschrijven, wat gemakkelijk te begrijpen is aan de hand van de naam. Dit object doet zelf niets, het bevat alleen verschillende informatie over het http-verzoek. Daarom wordt, zoals u waarschijnlijk al vermoedt, ook de Builder-sjabloon gebruikt om het te maken.
HttpRequest request = HttpRequest.newBuilder()
.method1()
.method2()
.methodN()
.build();
Waar tussen aanroepen van de methoden newBuilder() en build() u alle methoden moet aanroepen om een object te construerenHttpRequest.
Een voorbeeld van een eenvoudig verzoek ziet er als volgt uit:
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(“http://codegym.cc”))
.build();
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
U kunt alle methoden van de klasse HttpRequest vinden via de link in de officiële documentatie .
En dan zullen we de meest populaire analyseren.
uri()-methode
Met de methode uri() kunt u de URI (of URL) instellen waarnaar het http-verzoek wordt verzonden. Voorbeeld:
HttpRequest request = HttpRequest.newBuilder()
.uri( URI.create(“http://codegym.cc”) )
.build();
Je kunt deze code trouwens iets korter maken door de URI rechtstreeks door te geven aan de methode newBuilder() :
HttpRequest request = HttpRequest.newBuilder( URI.create(“http://codegym.cc”) ).build();
Belangrijk! Een URI kan op twee manieren worden gemaakt:
- nieuweURI(String)
- URI.create(String)
De tweede manier heeft de voorkeur. De eerste manier is helaas niet erg goed, omdat de URI-constructor wordt gedeclareerd als openbare URI(String str) gooit URISyntaxException en URISyntaxException is een gecontroleerde uitzondering.
Methoden GET(), POST(), PUT(), DELETE()
U kunt de http-verzoekmethode instellen met behulp van de volgende methoden:
- KRIJGEN()
- NA()
- NEERZETTEN()
- VERWIJDEREN()
Zo ziet een eenvoudig GET-verzoek eruit:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.GET()
.build();
versie() methode
U kunt ook de versie van het HTTP-protocol instellen. Er zijn slechts 2 opties:
- HttpClient.Versie.HTTP_1_1
- HttpClient.Versie.HTTP_2
Stel dat u een verzoek wilt maken met behulp van het HTTP/2-protocol, dan moet u het volgende schrijven:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.version( HttpClient.Version.HTTP_2 )
.GET()
.build();
Heel eenvoudig, nietwaar? :)
time-out() methode
U kunt ook de uitvoeringstijd van de query instellen. Als het slaagt en het verzoek wordt nooit voltooid, wordt een HttpTimeoutException gegenereerd .
De tijd zelf wordt ingesteld met behulp van het objectduurvan de Java DateTime-API. Voorbeeld:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.timeout( Duration.of(5, SECONDS) )
.GET()
.build();
De aanwezigheid van deze methode laat zien dat de klassen HttpClient en HttpRequest verschillende taken kunnen uitvoeren. Stel je voor dat je een verzoek uitvoert, en er gebeurde iets met het netwerk en het duurde 30 seconden. Het is veel handiger om direct een exception te ontvangen en daar correct op te reageren.
header() methode
U kunt ook een willekeurig aantal headers aan elk verzoek toevoegen. En het is net zo eenvoudig om te doen als al het andere. Hiervoor is een speciale methode - header() . Voorbeeld:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.header("name1", "value1")
.header("name2", "value2")
.GET()
.build();
Er is nog een alternatieve manier om veel headers tegelijk in te stellen. Het kan handig zijn als u bijvoorbeeld een lijst met headers omzet in een array:
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://codegym.cc"))
.headers("name1", "value1", "name2", "value2")
.GET()
.build();
Alles elementair is eenvoudig.
GO TO FULL VERSION