CodeGym/Java Course/Modulo 3/Effettuare una richiesta con HttpRequest

Effettuare una richiesta con HttpRequest

Disponibile

metodi newBuilder(), build()

La classe HttpRequest è usata per descrivere una richiesta http, che è facile da capire dal suo nome. Questo oggetto non fa nulla da solo, contiene solo varie informazioni sulla richiesta http. Pertanto, come probabilmente hai già intuito, per crearlo viene utilizzato anche il modello Builder.

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

Dove tra le chiamate ai metodi newBuilder() e build() è necessario chiamare tutti i metodi per costruire un oggettoHttpRequest.

Un esempio di una semplice richiesta è simile a questo:

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

Puoi trovare tutti i metodi della classe HttpRequest al link nella documentazione ufficiale .

E poi analizzeremo il più popolare di loro.

metodo uri()

Utilizzando il metodo uri() , puoi impostare l'URI (o l'URL) a cui verrà inviata la richiesta http. Esempio:

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

A proposito, puoi accorciare un po' questo codice passando l'URI direttamente al metodo newBuilder() :

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

Importante! Un URI può essere creato in due modi:

  • nuovoURI(Stringa)
  • URI.create(Stringa)

Il secondo modo è preferibile. Il primo modo, sfortunatamente, non è molto buono, perché il costruttore di URI è dichiarato come public URI(String str) lancia URISyntaxException e URISyntaxException è un'eccezione controllata.

Metodi GET(), POST(), PUT(), DELETE()

È possibile impostare il metodo di richiesta http utilizzando i seguenti metodi:

  • OTTENERE()
  • INVIARE()
  • METTERE()
  • ELIMINARE()

Ecco come sarebbe una semplice richiesta GET:

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

metodo version()

È inoltre possibile impostare la versione del protocollo HTTP. Ci sono solo 2 opzioni:

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

Supponiamo che tu voglia creare una richiesta utilizzando il protocollo HTTP/2, quindi dovrai scrivere:

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

Molto semplice, vero? :)

metodo timeout()

È inoltre possibile impostare il tempo di esecuzione della query. Se passa e la richiesta non viene mai completata, verrà generata un'eccezione HttpTimeoutException .

L'ora stessa viene impostata utilizzando l'oggettoduratadall'API Java DateTime. Esempio:

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

La presenza di questo metodo mostra che le classi HttpClient e HttpRequest possono eseguire una varietà di attività. Immagina di eseguire una richiesta e che sia successo qualcosa alla rete ed è durato 30 secondi. È molto più utile ricevere immediatamente un'eccezione e reagire correttamente.

metodo header()

Puoi anche aggiungere qualsiasi numero di intestazioni a qualsiasi richiesta. Ed è facile da fare come qualsiasi altra cosa. C'è un metodo speciale per questo - header() . Esempio:

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

C'è un altro modo alternativo per impostare più intestazioni contemporaneamente. Potrebbe tornare utile se, ad esempio, hai convertito un elenco di intestazioni in un array:

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

Tutto elementare è semplice.

Commenti
  • Popolari
  • Nuovi
  • Vecchi
Devi avere effettuato l'accesso per lasciare un commento
Questa pagina non ha ancora commenti