CodeGym/Java kurs/Modul 3/Lag en forespørsel med HttpRequest

Lag en forespørsel med HttpRequest

Tilgjengelig

metoder newBuilder(), build()

HttpRequest- klassen brukes til å beskrive en http-forespørsel, som er lett å forstå fra navnet. Dette objektet gjør ingenting av seg selv, det inneholder bare forskjellig informasjon om http-forespørselen. Derfor, som du sikkert allerede har gjettet, brukes Builder-malen også til å lage den.

HttpRequest request = HttpRequest.newBuilder()
	.method1()
	.method2()
	.methodN()
    .build();

Hvor mellom kallene til metodene newBuilder() og build() må du kalle alle metodene for å konstruere et objektHttpRequest.

Et eksempel på en enkel forespørsel ser slik ut:

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create(“http://codegym.cc”))
    .build();
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());

Du kan finne alle metodene for HttpRequest- klassen på lenken i den offisielle dokumentasjonen .

Og så vil vi analysere de mest populære av dem.

uri() metode

Ved å bruke uri()- metoden kan du angi URI (eller URL) som http-forespørselen skal sendes til. Eksempel:

HttpRequest request = HttpRequest.newBuilder()
    .uri( URI.create(“http://codegym.cc”) )
    .build();

Du kan forresten gjøre denne koden litt kortere ved å sende URI-en direkte til newBuilder()- metoden :

HttpRequest request = HttpRequest.newBuilder( URI.create(“http://codegym.cc”) ).build();

Viktig! En URI kan opprettes på to måter:

  • nyURI(streng)
  • URI.create(String)

Den andre måten er å foretrekke. Den første måten er dessverre ikke veldig bra, fordi URI-konstruktøren er erklært som offentlig URI(String str) kaster URISyntaxException , og URISyntaxException er et sjekket unntak.

Metoder GET(), POST(), PUT(), DELETE()

Du kan angi http-forespørselsmetoden ved å bruke følgende metoder:

  • FÅ()
  • POST()
  • SETTE()
  • SLETT()

Slik vil en enkel GET-forespørsel se ut:

HttpRequest request = HttpRequest.newBuilder()
  .uri(new URI("https://codegym.cc"))
  .GET()
  .build();

versjon() metode

Du kan også angi HTTP-protokollversjonen. Det er bare 2 alternativer:

  • HttpClient.Version.HTTP_1_1
  • HttpClient.Version.HTTP_2

La oss si at du vil opprette en forespørsel ved å bruke HTTP/2-protokollen, så må du skrive:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .version( HttpClient.Version.HTTP_2 )
   .GET()
   .build();

Veldig enkelt, ikke sant? :)

timeout()-metoden

Du kan også angi utførelsestiden for spørringen. Hvis den går gjennom og forespørselen aldri fullføres, vil et HttpTimeoutException bli kastet .

Selve tiden stilles inn ved hjelp av objektetvarighetfra Java DateTime API. Eksempel:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .timeout( Duration.of(5, SECONDS) )
   .GET()
   .build();

Tilstedeværelsen av denne metoden viser at klassene HttpClient og HttpRequest kan utføre en rekke oppgaver. Tenk deg at du utfører en forespørsel, og noe skjedde med nettverket og det varte i 30 sekunder. Det er mye mer nyttig å umiddelbart motta et unntak og reagere på det riktig.

header() metode

Du kan også legge til et hvilket som helst antall overskrifter til enhver forespørsel. Og det er like enkelt å gjøre som noe annet. Det er en spesiell metode for dette - header() . Eksempel:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .header("name1", "value1")
   .header("name2", "value2")
   .GET()
   .build();

Det er en annen alternativ måte å sette mange overskrifter på samtidig. Det kan være nyttig hvis du for eksempel konverterte en liste med overskrifter til en matrise:

HttpRequest request = HttpRequest.newBuilder()
   .uri(new URI("https://codegym.cc"))
   .headers("name1", "value1", "name2", "value2")
   .GET()
   .build();

Alt elementært er enkelt.

Kommentarer
  • Populær
  • Ny
  • Gammel
Du må være pålogget for å legge igjen en kommentar
Denne siden har ingen kommentarer ennå