working with http client rest apis and connection availability check
TRANSCRIPT
9 Settembre 2016
Working with HTTP Client, REST APIs and connection availability checkMichele [email protected] @apomic80 http://www.tolist.net
9 Settembre 2016
Architettura basata su API
9 Settembre 2016
Che cos’è REST• REST è l’acronimo di REpresentational State Transfer • E’ un modello architetturale per creare API che utilizzano il protocollo HTTP
come metodo di comunicazione.• Ogni applicazione è divisa in risorse• Ogni risorsa è unica ed indirizzabile usando una sintassi universale• Le risorse sono condivise usando un’interfaccia uniforme che preveda un
insieme vincolato di operazioni ben definite e un insieme vincolato di contenuti• Il protocollo deve essere: client-server, stateless e cachable.
9 Settembre 2016
Le risorse• REST è caratterizzato dall’esistenza di risorse • Ogni risorsa ha un identificativo unico e possiamo accederci tramite un
identificatore globale (che chiamiamo URI)
9 Settembre 2016
HTTP e REST: Request Verbs
9 Settembre 2016
HTTP e REST: Request Headers• Si tratta di istruzioni ulteriori che vengono aggiunte alla richiesta• La lista completa è disponibile al seguente indirizzo: (http://
www.w3.org/Protocols/rfc2616/rfc2616-sec14.html)• Possibili header sono• Accept• Location Header• Age
9 Settembre 2016
HTTP e Rest: Response Status Codes• Questi codici vengono prodotti assieme alla risposta e forniscono al client
dettagli sullo stato della richiesta• La lista completa è disponibile al seguente indirizzo: http://
www.w3.org/Protocols/rfc2616/rfc2616-sec10.html • 200: ok• 201: created• 204: no content• 400: bad request• 404: resource not found• 500: server error
9 Settembre 2016
SOAP vs REST (differenze concettuali)
• estraiUtente(Utente)• Questa è un’operazione REST perché stiamo accedendo a una risorsa (un dato)
• switchCategoria(Utente, oldCategory, newCategory)• Questa è un’operazione SOAP
9 Settembre 2016
HttpClient• Per invocare servizi REST in .NET è possibile utilizzare HttpClient:• Metodi per i verbi comuni (DELETE, GET, PUT e POST). Ognuna di queste richieste viene
inviata in modo asincrono.• Supporto di impostazioni e schemi di autenticazione comuni.• Accesso ai dettagli SSL (Secure Sockets Layer) sul trasporto.• Possibilità di recuperare, impostare ed eliminare cookie.• Info sullo stato delle richieste HTTP disponibili per i metodi asincroni.
9 Settembre 2016
DemoHttpClient e Rest API
9 Settembre 2016
Verifica disponibilità della Rete• In applicazioni mobile che usano un back-end la disponibilità della
connessione è fondamentale:• L’applicazione in assenza di connessione potrebbe non aver nessun senso di utilizzo• Politiche di gestione dell’off-line
• Sola lettura da un database locale• Scrittura off-line e successiva sincronizzazione dei dati
9 Settembre 2016
Verifica connettività in iOS• In Xamarin iOS è possibile utilizzare una classe helper disponibile su github,
basata sulla API :• https://
github.com/xamarin/ios-samples/blob/master/ReachabilitySample/reachability.cs
9 Settembre 2016
Verifica connettività in Android• In android è disponibile un oggetto ConnettivityManager, da cui ottenere un
oggetto NetworkInfo, che fornisce le infomazioni sulla rete e il suo stato:
• Richiede android.permission.ACCESS_NETWORK_STATE
9 Settembre 2016
DemoNetwork Availability Check
9 Settembre 2016
Question time