App_Web_titoli_azionari

Il componente Web consente di gestire dati tramite HTTP GET o HTTP POST. Questi metodi permettono di interrogare server web i quali restituiscono dati. I dati ricevuti possono essere subito fruibili o anche elaborati da proprie applicazioni. Ad esempio, è possibile scrivere un’applicazione che visualizzi le informazioni di borsa, ma anche le previsioni del tempo, eccetera. Individuata la fonte dei dati, basta passarle i parametri richiesti per ricevere informazioni. Con queste, popolare pagine del telefono o tablet.
Questa applicazione permette di scegliere un titolo azionario da una lista prestabilita di titoli, saperne la quotazione corrente e la variazione percentuale sul valore precedente. La lettura dei dati avviene sul sito Yahoo Finanza, e fatta utilizzando il componente Web di App Inventor e le API di Yahoo.
API è l’acronimo di Application Programming Interface (Interfaccia di Programmazione di un'Applicazione) ed indica un insieme di procedure disponibili al programmatore per l'espletamento di un determinato compito all'interno di un certo programma.
Molti servizi web forniscono un’interfaccia di programmazione API per gli sviluppatori
Le API di Yahoo! Finanza sono invece documentate a http://www.gummy-stuff.org/Yahoo-data.htm
Sul server, ogni titolo azionario è contrassegnato da un simbolo univoco.
Per ottenere l’ultimo prezzo e la variazione è necessario comunicarne il simbolo del titolo azionario ed i parametri che indicano cosa viene richiesto per quel titolo.
Ad esempio in questo indirizzo web.
http://download.finance.yahoo.com/d/quotes.csv?f=nl1p28&s=ENEL.MI

  • Da http fino al punto interrogativo escluso è l’indirizzo con il quale avviene l’accesso al sito.
  • Il punto interrogativo indica che quello che segue sono i parametri dell’interrogazione.
  • La parte seguente fino a & esclusa sono il tipo di dati richiesti.
  • Il simbolo & indica che dopo inizia un secondo gruppo di parametri.
  • La lettera s è, di fatto, una variabile che verrà letta sul server.
  • Per mezzo dell’operando = viene inserito in s il simbolo del titolo di cui vengono richiesti i dati.

L’utente si trova più a suo agio scegliendo fra nomi propri delle azioni che fra i loro simboli.
Per questa ragione vengono create 2 liste, una con il nome delle azioni ed una con i loro simboli.
Nella lista dei nomi propri delle azioni ognuna di queste è contraddistinta da una posizione Index.
Nella lista dei simboli, allo stesso Index deve corrispondere il simbolo della medesima azione.
La lunghezza delle liste è irrilevante purché l’accoppiamento Nome/simbolo sia rispettato.
L’utente sceglie nella lista dei nomi propri, il computer memorizza l’Index, e dalla lista dei simboli estrae il simbolo per quell’Index inserendolo nella richiesta per il server.

Quindi, la prima parte http://download.finance.yahoo.com/d/quotes.csv?f=nl1p28&s= è uguale per tutte le richieste e la parte finale è il simbolo corrispondente al titolo che di volta in volta viene inviato.

Dopo la scelta, viene fatta al server una richiesta GET, utilizzando la proprietà Url del componente Web (In Blocks Editor, blocco Web.Url all’interno del blocco lpSceltaTitolo.AfterPicking).
La risposta è recuperata nell’evento (blocco) Web.GotText.
Nel blocco Web.GotText, nella variabile (blocco) responseContent viene a trovarsi il contenuto richiesto.
Ad esempio, nel caso venga scelto ENEL i dati ritornati dal server saranno del tipo:
"ENEL”,2.9220,”+0.83%”,,”ENEL.MI”
I valori numerici potranno essere diversi in ragione dell’oscillazione del valore del titolo.
I dati di risposta dal server sono in formato CSV.
In questo formato ogni riga (record di database) è rappresentata da una linea di testo, che a sua volta è divisa in parti (campi di record) separati da un apposito carattere, in questo caso la virgola.
Nell’applicazione vengono mostrati i risultati per il titolo scelto ed il dato grezzo come ricevuto dal server.

Componenti e proprietà da assegnare:

Componente

Gruppo

Nome

Proprietà

Text

ListPicker

Basic

lpSceltaTitolo

Scelta titolo

Fill parent

Label

Basic

lTitoloScelto

-titolo scelto-

Automati

Label

Basic

lDatiGrezzi

-dati grezzi-

Automatic

Web

Other stuff

Web

Come dovrebbero presentarsi la pagina Design e lEmulatore nellutilizo:
Aprire Block Editor
Vengono costruire tre liste, due per i nomi e simboli dei titoli azionari, la terza per la memorizzazione dei dati di ritorno dal server. La lista con i nomi viene inizializzata all’avvio per far si che il LstPicker lpSceltaTitolo sia immediatamente funzionante.
Viene poi creata la lista dei simboli. E' fondamentale che i componenti della lista abbiano lo stesso numero (Index) del titolo correlato nella lista precedente, perché sarà il numero d’ordine (Index) a determinare quale simbolo verrà inviato al server.
Viene creata una terza lista per i dati di ritorno dal server.
Viene lasciata vuota, sarà compilata dinamicamente con i dati ricevuti da Yahoo! Finanza.
Viene assemblatoil ListPicker lpSceltaTitolo che permette di scegliere fra i nome propri dei titoli azionari.
Tutto ruota intorno al blocco lpSceltaTitolo.SelectionIndex.
Questo blocco conterrà l’Index della voce-titolo azionario scelta (partendo da 1).
Il numero d’ordine (Index) è lo stesso per il simbolo corrispondente nella lista TitoliSimboli.
Utilizzando questo numero (Index), per mezzo del blocco select list item, viene passato al Web.Url la voce con lo stesso Index della lista TitoliSimboli.
Il dato viene passato in accodamento a
http://download.finance.yahoo.com/d/quotes.csv?f=nl1p28&s=
completando la stringa per la richiesta al server.
Web.GotText è l’evento che indica richiesta terminata con ritorno di dati dal server, con i prossimi blocchi viene letto la risposta ed iserito i dati sul display.