Nelle precedenti esercitazioni abbiamo visto come eseguire invocazioni HTTP utilizzando cURL. In alcune di queste interrogazioni abbiamo utilizzato richieste in formato XML, quindi abbiamo visto in dettaglio la sintassi di questo formato e come descriverlo utilizzando lo Schema XML. Abbiamo quindi portato questi concetti in ambiente Java e visto come costruire e validare messaggi XML.
Continuiamo replicando le richieste HTTP, eseguite nella prima
esercitazione con cURL
, utilizzando applicazioni Java.
Ebay Developer Account.
Nel corso dell'esercitazione utilizzeremo le API di eBay che
richiedono una utenza sviluppatore registrata.
Se abbiamo già eseguito la registrazione per le
esercitazioni precedenti,
accedere al proprio account
per recuperare la AppID
dell'ambiente
Sandbox da utilizzare negli esercizi.
Se non siamo ancora registrati, accedere al
portale di registrazione sviluppatori
per creare una nuova utenza ed ottenere le credenziali applicative.
Librerie LAI.
Sono fornite alcune classi di utilità che semplificano l'implementazione
delle applicazioni richieste nelle esercitazioni. Per utilizzarle, scaricare
le librerie Lai e aggiungerle al progetto
eclipse (project > properties > Java build path > Add external jar...
). La relativa documentazione è disponibile qui.
Implementare un'applicazione JAVA che esegua una richiesta HTTP GET
allo ShoppingService
di eBay per una GetCategoryInfo
e stampi la risposta, comprensiva di header HTTP.
La libreria per implementare le applicazioni di rete in java è
java.net
.
Step 1. Costruire la query string e verificarla con cURL
.?
La connessione al servizio deve contenere nella query string
tutti i parametri richiesti dall'operazione.
Costruire quindi la URL di connessione
al servizio http://open.api.sandbox.ebay.com/shopping che presenti:
appid
= la AppID per l'ambiente Sandbox (si recupera dal proprio account sviluppatore)callname
= il nome dell'operazione richiesta (GetCategoryInfo
)version
= la versione del servizio richiesto (867
)CategoryID
= l'id categoria (-1
)IncludeSelector
= se valorizzato aChildCategories
, nella risposta sono elencate le categorie figlie
Una volta costruita la URL, verificarla utilizzando il comando cURL
come visto nell'esercitazione HTTP.
Step 2. Creare una connessione.Utilizzare la classe URL
per creare una nuova connessione
Suggerimento | |
---|---|
Dal momento la URL delle Web API ha protocollo http, la connessione che verrà creata è di tipo
|
Step 3. Leggere la risposta. Stampare a video:
lo stato HTTP e la reason phrase (
getResponseCode
egetResponseMessage
)l'header HTTP
Content-Type
(getHeaderField
)il messaggio di risposta (
getInputStream
o, in caso di errore,getErrorStream
)
Suggerimento | |
---|---|
Per leggere un InputStream e convertirlo in testo, è possibile utilizzare il metodo |
Creare un programma che esegua la stessa richiesta fatta nell'esercizio precedente, ma tramite una richiesta XML inviata tramite POST e stampare a video il risultato.
Suggerimento | |
---|---|
Abbiamo già eseguito questa richiesta nello STEP 1 dell'esercitazione HTTP utilizzando |
Step 1. Creare una connessione.Creare la connessione al servizio http://open.api.sandbox.ebay.com/shopping senza indicare parametri nella query string che saranno specificati con gli header HTTP.
Step 2. Configurare la connessione.
Utilizzando i metodi della classe HttpURLConnection
configurare la connessione in modo che:
il metodo utilizzato sia POST (
setMethod
)vengano settati gli Header HTTP richiesti dal servizio e l'header
Content-type
(addRequestProperty
)venga abilitato il traffico in uscita (
setDoOutput
)
Suggerimento | |
---|---|
I parametri richiesti dal servizio tramite query string o http header sono gli stessi, ma cambia il nome da utilizzare:
|
Step 3. Spedire la richiesta.
Inviare la richiesta XML serializzandola
nello steam di uscita della connessione (getOutputStream()
).
Suggerimento | |
---|---|
Il codice che costruisce il DOM della richiesta e lo serializza è già stato scritto per risolvere l'esercizio XML con DOM |
Step 4. Validare e leggere la risposta. Utilizzare lo XML Schema dello ShoppingService di eBay per eseguire il parsing e validazione della risposta e ottenerne un DOM. La risposta contiene le informazioni sulla categoria ROOT e sulle categorie figlie. Navigare il DOM per recuperare e stampare identificativo e nome delle sole categorie figlie.
Suggerimento | |
---|---|
Il codice che esegue la validazione e parsing di uno stream di dati è già stato scritto per risolvere l'esercizio Validazione XML con Java |
Estendere il programma precedente di modo che stampi a video l'albero delle categorie di eBay iterando le richieste HTTP (di seguito un piccolo estratto):
-- (-1) Root | |-- (20081) Antiques | | |-- (37903) Antiquities | | |-- (4707) Architectural & Garden | | |-- (100927) Periods & Styles | | |-- (1217) Primitives | | |-- (22608) Reproduction Antiques | | |-- (12) Other | |-- (550) Art | | |-- (60435) Direct from the Artist | | |-- (158658) Art from Dealers & Resellers | | |-- (52524) Wholesale Lots | |-- (2984) Baby | | |-- (100223) Baby Gear | | |-- (20433) Baby Safety & Health | | |-- (20394) Bathing & Grooming | | |-- (66692) Car Safety Seats | | |-- (45455) Diapering | | |-- (20400) Feeding
Importante | |
---|---|
Visto che le categorie sono centinaia di migliaia, limitare la costruzione dell'albero
ai primi due livelli ( |