- Learn
- Guida HTTP2
- Java: libreria client HTTP/2
Java: libreria client HTTP/2
Diamo una rapida panoramica di alcune librerie che è possibile utilizzare per costruire client HTTP/2 con diversi linguaggi di programmazione, iniziando in questa lezione con Java. Abbiamo preso in considerazione solo quelle librerie che implementano la versione definitiva del protocollo.
Se si sta utilizzando un certificato self-signed, sarà necessario installare tra i certificati di sistema il file PEM generato, poichè in Java non è possibile disabilitarne la verifica.
Java
Per realizzare client scritti in linguaggio Java è possibile utilizzare la libreria okhttp, reperibile su GitHub. La libreria è compatibile anche con Android, e consente di realizzare client per tutte le revisioni di HTTP utilizzate, non solo HTTP/2; per il supporto ad HTTP/2 è richiesta la versione 2.3 o superiore della libreria.
Nell’esempio che segue vedremo sia il prelevamento di una risorsa binaria, sia quello di una risorsa testuale. Il codice sorgente del client che analizzeremo è allegato a questa lezione e disponibile sempre su GitHub.
La creazione del client avviene istanziando un nuovo oggetto OkHttpClient
:
final OkHttpClient client = new OkHttpClient();
In seguito, è necessario istanziare un oggetto Request per poter aprire la connessione.
Request request = new Request.Builder()
.url("https://10.211.55.17:3000/index.html")
.build();
La connessione viene realmente effettuata con il metodo newCall
del client. La risposta va memorizzata in un apposito oggetto Response
:
Response response = client.newCall(request).execute();
La risposta sarà accessibile sotto forma di stream. Nel caso ci si aspetti un contenuto testuale, se ne potrà effettuare la lettura linea per linea come segue:
BufferedReader reader = new BufferedReader(response.body().charStream());
String result, line = reader.readLine();
result = line;
while ((line = reader.readLine()) != null) {
// operazione sulla singola linea
}
Nel caso di risposta binaria, invece, si leggerà byte a byte (nel nostro esempio, 1 KB per iterazione):
// Per un contenuto binario...
BufferedInputStream input = new BufferedInputStream(response.body().byteStream());
OutputStream output = new FileOutputStream(outputFile);
byte[] data = new byte[1024]; // leggiamo 1 KB alla volta
int count = 0;
while ((count = input.read(data)) != -1) {
// operazione sui dati letti
}
Installare il certificato self-signed nel client
Se è stato generato un certificato self-signed sul server HTTP/2 come precedentemente descritto, non sarà possibile effettuare la connessione. Verrà infatti generata un’eccezione simile alla seguente:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Per installare rapidamente il certificato si può utilizzare il programma InstallCert, il cui sorgente è disponibile a questo link.
Il programma, una volta compilato, va eseguito con i privilegi di amministratore, se il JRE è installato in modalità system-wide.
Nel caso del client d’esempio, possiamo procedere in questo modo:
sudo java it.html.http2client.InstallCert 10.211.55.17:3000
Se vuoi aggiornamenti su Server inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
I Video di HTML.it
Ubuntu: come installare i programmi
In questo breve video vedremo come sia facile installare i programmi che ci servono sulla nostra installazione di Ubuntu. Basterà […]