Nuovi formati di trasferimento delle informazioni ci stanno costringendo a cambiare il modo in cui pensiamo alle nostre applicazioni, ogni giorno dipendiamo di più da Internet e con essa anche la trasmissione di dati tra luoghi lontani e tecnologie diverse.
Integrare diverse tecnologie è sempre stata una sfida in passato, ma con i nuovi standard e la forza che il protocollo sta assumendo HTTP ora è molto più semplice, poiché non dipendiamo dall'integrazione di applicazioni, ma ogni applicazione ha un'interfaccia web per dettare i suoi dati.
Nel Giava molte volte avremo bisogno di accedere a informazioni che altre applicazioni hanno o generano e quindi non possiamo trascurare l'aspetto della conoscenza di come effettuare connessioni da un'applicazione Giava alla rete. Ma non solo alle reti, bisogna anche saper fare clienti dei servizi web anche se è in modo basilare poiché con questo faremo in modo di non essere isolati nel nostro ambiente.
Cosa sono i servizi web?Il servizi web Sono applicazioni che si trovano su server che hanno accesso a una rete, queste possono essere in qualsiasi lingua o tecnologia, tuttavia tutte le comunicazioni con il "mondo esterno" sono gestite tramite HTTP e i suoi metodi, GET, POST, PUT, DELETE, ecc.
ConnessioniLa cosa interessante di questo tipo di applicazioni è la possibilità di effettuare connessioni tra tecnologie totalmente diverse, ad esempio possiamo avere un web service scritto in Pitone per portarci l'inventario di una fabbrica e poi nella nostra applicazione in Giava ad esso ci colleghiamo per conoscere le quantità di un prodotto.
Tale facilità è ciò che ha catapultato la loro rapida adozione negli ultimi anni e ha reso standard l'offerta di tali strumenti quando si tratta di sistemi e applicazioni aziendali. Anche applicazioni personali come blog o forum offrono servizi web per facilitare la generazione di applicazioni mobili e che tutto rimanga nello stesso ecosistema.
Avendo già visto qualcosa sull'argomento dei servizi web, vediamo come vengono classificati.
Servizi REST
Questi tipi di servizi consentono la trasmissione di dati attraverso HTTP, utilizzando esclusivamente le modalità di tale protocollo, generalmente la comunicazione prevede solo l'invio dei dati o tramite form o JSON, alcuni addirittura ricevono fino a XML.
È il più popolare del momento poiché la costruzione dei client per il consumo è molto semplice e non richiede molte preparazioni aggiuntive. Semplicemente affinché il nostro cliente possa lanciare una richiesta OTTENERE a uno URL del servizio possiamo iniziare ad utilizzarlo o consumarlo come è nota anche l'azione di ottenimento dei dati.
Servizi SOAP
Il servizio SAPONE è molto più vecchio di RIPOSO, e fino a pochi anni fa era il modo standard di realizzare applicazioni di servizi web, la sua costruzione richiede di seguire alcuni protocolli in particolare ed è necessario generare un file XML chiamata WSDL, dove vengono definiti i metodi a cui il client può accedere.
A causa dell'elevata complessità della preparazione dei clienti a consumare questo tipo di servizio, la sua popolarità è in declino, motivo per cui la maggior parte delle nuove tecnologie non ne tiene conto. Tuttavia, esistono ancora molti servizi nel mondo tecnologico che vengono gestiti con questa modalità, quindi anche se sta cadendo in disuso, è ancora necessario saperlo utilizzare.
La complessità di questo tipo di servizio risiede nella preparazione dei diversi XML, e seguire alla lettera gli standard in base alle piattaforme, questo tipo di motivo è ciò che lo rende ingombrante e quindi gli sviluppatori sono migrati a RIPOSO.
Crea un programma che si connette usando TCP
Visto che abbiamo letto e rivisto un po' più a fondo ciò che rappresenta la parte teorica di ciò che sono servizi web, inizieremo la parte pratica di questo tutorial facendo un esercizio molto semplice che ci aiuterà a capire il flusso delle cose.
Effettueremo una semplice connessione dalla nostra applicazione attraverso la rete usando TCP con un team accessibile e disponibile al suo interno, per questo avremo bisogno di conoscere il tuo indirizzo IP e una porta disponibile e al di fuori delle restrizioni dei diversi firewall.
RequisitiPrima di tutto richiederemo il pacchetto java.net.Socket che ci dà una serie di strumenti che ci renderanno la vita più facile stabilendo connessioni, ovviamente l'esempio che mostriamo è molto basilare ma ci dà le basi per poter creare cose oltre a seconda delle nostre esigenze.
Creeremo un programma che tenti di connettersi a una macchina tramite una porta specifica, tuttavia questo programma valuterà anche se si è verificato un errore o qualsiasi complicazione durante il processo di connessione, con questo possiamo agire diligentemente e non aspettare un fatale failure Diamo un'occhiata al codice per questo esempio:
import java.net.Socket; import java.net.UnknownHostException; import java.net.NoRouteToHostException; import java.net.ConnectException; public class ConnectionTest {public static void main (String [] argv) {String server = argv.length = = 1? argv [0]: "localhost"; porta int = 80; try (Socket socket = new Socket (server, porta)) {System.out.println ("- Connessione riuscita a:" + server + "-"); } catch (UnknownHostException e) {System.err.println (server + "Server sconosciuto"); Restituzione; } catch (NoRouteToHostException e) {System.err.println (server + "Fuori ambito"); Restituzione; } catch (ConnectException e) {System.err.println (server + "Connessione rifiutata"); Restituzione; } catch (java.io.IOException e) {System.err.println (server + '' + e.getMessage ()); Restituzione; }}}Iniziamo importando il pacchetto java.net.Socket con questo avremo la classe Presa che è quello che useremo in seguito per stabilire la connessione, se non gli passiamo un argomento durante l'esecuzione del programma, si collegherà direttamente al nostro computer, in questo caso indichiamo la porta 80, ma potrebbe essere un'altra.
Mettiamo la creazione dell'istanza Presa in un blocco prova a prendere questo ci permette di valutare le eccezioni se la connessione non va a buon fine invece di terminare bruscamente il programma. Infine abbiamo diversi blocchi di cattura ciascuno con un'eccezione diversa per darci un'idea di cosa è andato storto.
Per far funzionare le eccezioni abbiamo visto che all'inizio abbiamo importato il pacchetto java.net che useremo in questo esempio, ora vediamo come appare tutto questo quando eseguiamo il nostro programma. Durante l'esecuzione del nostro programma, vediamo nell'immagine seguente come siamo riusciti ad accedere con successo al nostro router Wi-Fi e il nostro localhost:
Cliente per un servizio REST
In questo esempio creeremo un piccolo client di servizi Web che si connetterà a un server RIPOSO, per questo abbiamo solo bisogno di un server che possa darci una risposta al metodo OTTENERE di HTTP, ecco perché possiamo usare freegeoip.net che, a seconda di cosa passiamo attraverso l'URL, può restituire a JSON con i dati di qualsiasi pagina web che desideriamo.
Vediamo il codice che abbiamo realizzato:
import java.net.URL; import java.net.URLConnection; import java.io.BufferedReader; import java.io.InputStreamReader; public class ClientRest {public static void main (String [] args) genera un'eccezione {URLConnection conn = new URL ("http://freegeoip.net/json/www.espnf1.com") .openConnection (); try (BufferedReader is = new BufferedReader (new InputStreamReader (conn.getInputStream ()))) {String line; while ((line = is.readLine ())! = null) {System.out.println (line); }}}}La prima cosa che facciamo è importare le classi URL sì Collegamento URL, questi ci consentono di convertire prima una stringa in un URL che può essere interpretato da Giava e in secondo luogo, crea la connessione giusta. Quindi importiamo due librerie di classi che ci permettono di manipolare i dati che riceveremo come risposta dal servizio web.
Infine, effettuiamo il nostro collegamento al servizio web di freegeoip.netIn questo caso gli passiamo qualsiasi pagina che sappiamo esistere, in questo modo possiamo ottenere qualche risultato, poi memorizziamo la risposta in un buffer e poi la leggiamo e la passiamo ad un oggetto String, infine stampiamo il contenuto e otterrà qualcosa di simile a quello che vediamo nell'immagine seguente:
INGRANDIRE
Ovviamente questo è un approccio semplice per poter capire come funzionano i servizi web, poiché non copre l'invio di parametri da parte del nostro cliente, ma per questo possono essere documentati su Apache HttpClient, che può darti strumenti superiori per quanto riguarda il consumo di questo tipo di servizi Web, che lasciamo come compito.
Con questo abbiamo finito questo tutorial, abbiamo creato un paio di programmi che ci aiutano a metterci in carreggiata per essere in grado di padroneggiare il servizi webCon questo vediamo già come la nostra mente inizierà sicuramente a immaginare i migliori usi di questi strumenti nelle nostre applicazioni e quindi a rendere le cose molto più grandi.
Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo