Come visto qualche giorno fa, il team Google ha introdotto un interessantissimo nonchè potentissimo nuovo componente in App Inventor.
Si chiama semplicemente "Web" e ci permette di ricevere dati tramite HTTP GET o HTTP POST nella nostra applicazione.
Questo vuol dire che ogni pagina internet, server web, etc... potrà essere "interrogato" dalla nostra app e potremo avere a disposizione questi dati all'interno di app inventor.
Le possibilità si ampliano di molto rispetto al passato quando l'unico elemento per fare una cosa simile era "TinyWebDB" ma il suo uso era molto più complicato e laborioso.
Usando questo elemento sarà possibile ad esempio costruire un app che visualizzi le previsioni del tempo, le informazioni di borsa, le estrazioni del superenalotto e chi più ne ha più ne metta!
Per facilitare le cose dovremmo trovare una sorgente web che ritorni i risultati idealmente in CSV, ma con qualche lavoro extra sarà possibile leggere anche feed RSS o file XML.
Guardate il video dove ho creato una semplice applicazione che usa yahoo finance per controllare i valori di una azione del mercato azionario.
"DANIELI & C.",18.8800,"+1.45%"ovvero le informazioni riguardanti il titolo di borsa in formato .csv Per finire vediamo brevemente l'help di google (tradotto da me in italiano) del componente Web
Properties
ResponseFileName
- Il nome del file che vogliamo salvare (se decidiamo di salvarlo) dopo aver invocato Web1.Get
SaveResponse
- Flag per indicare se vogliamo salvare la risposta in un file o no
Url
- L'URL della richiesta web.
Events
GotFile(text url, number responseCode, text responseType, text fileName)
- Evento che indica che la richiesta ha terminato il suo lavoro
- Se responseCode è 200 allora la risposta è ok (e viene salvata su file il risultato)
GotText(text url, number responseCode, text responseType, text responseContent)
- Evento che indica che la richiesta ha terminato il suo lavoro
- Se responseCode è 200 allora la risposta è ok (e responseContent contiene la risposta stessa)
Methods
Get()
- Esegue un HTTP GET usando la proprietà URL e riceve la risposta.
- Se SaveResponse è vero la risposta viene salvata in un file e l'evento GotFile è triggherato.
- ResponseFileName può essere usato per specificare il nome del file.
- Se SaveResponse è falso allora viene triggherato l'evento GotTextiggered.
text HtmlTextDecode(text htmlText)
- Decodifica l'HTML , i caratteri e le entità HTML come &, <, >, ', and " sono cambiate in &, <, >, ', and ".
text JsonTextDecode(text jsonText)
- Decodifica il valore JSON ritornato. Se il testo JSON ha le virgolette, queste vengono rimosse.
PostFile(text path)
- Esegue una richiesta HTTP POST usando la proprietà Url e i dati dal file specificato, e riceve la risposta. Se SaveResponse è vero, la risposta verrà salvata in un file e levento GotFile verra triggherato. La proprietà ResponseFileName può essere usata per specificare il nome del file. Se SaveResponse è falso, allora verrà triggherato l'evento GotText
PostText(text text, text encoding)
- Esegue una richiesta HTTP POST usando la proprietà Url e il testo specificato, e riceve la risposta.Se SaveResponse è vero, la risposta verrà salvata in un file e levento GotFile verra triggherato. La proprietà ResponseFileName può essere usata per specificare il nome del file.Se SaveResponse è falso, allora verrà triggherato l'evento GotText
text UriEncode(text text)
- Codifica il testo fornito in modo che possa essere utilizzato in un URL.
Come vedete controlliamo che dentro la casella SimboloAzione_Textbox ci sia scritto qualcosa (ovvero che la sua lunghezza sia maggiore di 0)
Semplice e funzionale!
Complimenti per il tutorial!! Sono partito subito da questo che mi interessava, ma ora vado a vedere anche quelli più semplici per imparare ancora meglio.
RispondiEliminaCiao!
Ho trovato il tuo blog tramite questo video, davvero bravo! Per caso hai in programma un tutorial sull'uso del metodo POST?
RispondiEliminaCioè invece di prelevare dati dal web, mandare dati (es. foto, testi) ad una form?
Grazie Ciao!
non ho mai provato a fare nulla col metodo POST,però è sicuramente un idea che terrò buona per uno dei prossimi tutorial!Grazie per il suggerimento!
RispondiEliminaCiao!
RispondiEliminaho seguito passo passo il tuo tutorial, ma al momento della chiamata web ricevo il seguente messaggio:
BAD ARGUMENTS TO LIST TO CSV ROW.
THE OPERATION LIST TO CSV ROW CANNOT ACCEPT THE ARGUMENT "ENI", 13.0800, "-1,65%".
hai idea di quale sia la causa??
ciao e grazie
paolo
ciao, scusa se mi ripeto ma avevo inserito un commento qualche giorno fa che poi non ho visto pubblicato, volevo chiederti se sai da cosa può dipendere l'errore "Bad arguments to list to csv row: the operation list to csv row cannot accept the argument "ENI",13.7700,"-2.69". Ho seguito passo passo il tuo tutorial e mi sembra tutto ok, in effetti anche facendo il debug con la funzione watch legge la quotazione corretta di ENI, da cosa può dipendere?
RispondiEliminaciao e grazie
paolo
Ciao Paolo, scusa se non ho risposto prima
RispondiEliminaHai provato a scaricare e far girare il mio sorgente?
Di solito quell'errore lo da se il testo in ingresso è vuoto o non contiene virgole
Se ancora non risolvi mandami i tuoi sorgenti e controllo...
Ciao complimenti tutto il sito ed i tutorial sono eccellenti. Volevo sapere come faccio ad usare altri siti per altre applicazioni? Esempio si può creare una galleria foto ma senza scaricare le foto, o quanto meno solo su richiesta.
RispondiEliminaAlessio
Potresti usare il componente WebView ed aprire al suo interno la pagina di Picasa o Flickr con le foto che vuoi visualizzare
RispondiEliminaCiao! vorrei sapere come posso creare un app semplice che dando in input l'url adeguato, mi dia in output il download del file pdf generato dall'url. non so quale funzione di WEB usare.. grazie!
RispondiEliminaCiao Davide, non devi usare il componente web ma bensi un activitystarter con cui farai partire il browser all'indirizzo (che puoi prendere da una textbox di AI) con il tuo pdf.
RispondiEliminaIn questo modo il browser del tuo telefono scaricherà il pdf (vedrai il download nella barra delle notifiche)
Guarda nella mia app Acqua Alta alla voce Altro, scarica pdf maree. E' questo quello che vorresti fare? fammi sapere, ciao
SI!! grazie mille ora è perfetto, ne ho fatta una che visualizza il contenuto in foreground ed un'altra che quindi scarica il pdf relativo al mio url. ancora grazie mille e complimenti per il blog!
RispondiEliminabuon lavoro!
Non riesco a incollare il testo su un blocco text! ke tasto devo usare?
RispondiEliminaSe sei su windows control C per copiare e control V per incollare.
RispondiEliminaCiao! Innanzitutto vorrei farti anche io i complimenti per la chiarezza ed i contenuti dei tutorial. Mi sono avvicinato da qualche giorno al mondo delle app e sto provando a crearne una. Ho trovato questo esempio molto calzante a quello che ho in mente e vorrei chiederti qualche ulteriore dritta a chiarimento: se anzichè una singola riga, il sito ti risponde con un elenco di righe con n campi e per ogni riga si vuole esporre sul form oltre ai campi anche un button da programmare in modo parametrico, come si procede?
RispondiEliminaTi ringrazio anticipatamente.
Quel che ritorna la funzione web è l'html del sito di cui vai a fare la query
RispondiEliminaquindi starà poi a te fare il parsing dell'html e tirare fuori tutti i dati che ti interessano, lo puoi fare cercando dentro l'html dei tag specifici o delle keyword.
Cmq il procedimento non è diverso,fai un app di prova e carica la pagina che ti interessa, poi guarda app inventor cosa ti ritorna e da li vedi come procedere, spero di esserti stato d'aiuto, ciao
Ciao... credo di non essermi spiegato bene.
RispondiEliminaLa mia necessità è di esporre, per ogni riga, una label ed un button.
Non conoscendo a priori il numero di righe che mi ritornerà la funzione web, quindi dovrei poter creare a runtime tanti oggetti Label e Button quante sono le righe del dataset.
E' questo passaggio che non riesco a capire come poterlo effettuare.
Mi puoi aiutare a capire? Grazie.
Ciao mpiliego, come avrai visto i componenti nel design editor van definiti a priori, non puoi definire nulla a livello di runtime che sia un componente del design editor...
RispondiEliminaAl massimo puoi sovrastimare il numero dei componenti necessari e lasciarli vuoti o non visibili se non ti servono.
Altrimenti puoi usare una sola label e formattarla in modo adeguato.
Ma non puoi putroppo creare tante label e button quante sono le righe...diciamo che è una limitazione per come è stato costruito App Inventor.
Ciao, complimenti per il blog ed i tutorial; davvero interessanti. Sto provando ad usare il web component con il metodo web1.gotfile. Io voglio:
RispondiElimina- visualizzare la pagina web attraverso web view (e credo di saperlo fare)in cui compare l'anteprima di un immagine;
- scaricare e salvare questa immagine in una cartella di destinazione predefinita clickando su un tasto dell'applicazione e non del sito dove è salvata l'immagine. Credo che per fare questo debba usare web1.gotfiles, ma non riesco a capire come funziona.
Spero di essere stato abbastanza chiaro, ti ringrazio e aspetto una tua risposta. Ciao :)
Ciao! Complimenti per il tuo blog!
RispondiEliminaI Tuoi tutorial sono fantastici!
Vorrei chiederti una cosa..ho fatto una prova di un'app che scarica un file dato da un indirizzo web..il problema, se così lo vogliamo chiamare, è che mi apre la "finestra" del browser e poi fa il download..si potrebbe evitare di aprire questa "finestra" e fare direttamente il download?..o quantomeno chiudere il browser a download finito..
Grazie mille!!!
Ciao,non capisco bene, usi il componente web o un activity starter?
Eliminacon l'activity starter per esempio nella mia app, quando scarichi il pdf della marea si apre per un attimo il browser ma poi si richiude e vedi il progresso del download nella notification bar.
Se invece usi il componente web non dovrebbe aprire nessuna finestra ma semplicemente salvare il risultato dove glielo specifichi in ResponseFileName
Intanto ti ringrazio per la risposta!
EliminaPer me utilizzare il componente web o un activity starter è uguale, al momento ho provato con l'activity starter e mi compare un attimo il browser come a te.. me c'è un modo che permette di fare questo download in modo "trasparente"? cioè senza che mi apra nulla, clicco il button per il download e parte subito il download ;)
Grazie mille!
Prova col componente Web anche se non son sicuro salvi qualunque tipo di file, forse salva solo pagine html.
EliminaFacci poi sapere,al momento non riesco a testare di persona al cosa mi dispiace.
Nada :/ Funzia solo con l'activity ;)
EliminaOra però ho un problema..dopo che faccio partire l'activity per il download, il browser non si chiude da solo ma devo uscire io.. è possibile fare in modo che partito il download il browser si chiuda e torni alla mia app?
EliminaGrazie :)
EDIT: ;) risolto :)
EliminaVorrei sapere una cosa, è possibile contattarti in privato? Avrei una cosa da chiederti :)
Grazie :)
Certo, scrivimi per mail o MP di G+ :)
EliminaBuongiorno, ringrazio per i preziosi tutorial. Grazie appunto a queste guide sto cercando di implementare un programmino android che gestisca un portafoglio titoli. Vorrei sapere come è possibile ad esempio effettuare una query che mi consenta di avere un elenco di titoli quotati in italia, piuttosto che ad esempio i titoli che negli ultimi mesi hanno realizzato migliori/peggiori performance. E' possibile?
RispondiEliminaringrazio in anticipo e buon android!
Dipende tutto dalla "sorgente" dati che utilizzi,io ho mostrato il funzionamento con yahoo finance e con un singolo titolo, ma di sorgenti che danno dati finanziari ce ne sono molte altre.
EliminaIl lavoro da fare è appunto quello di trovare una sorgente che ti dia i risultati voluti con una http get e poi fare il parsing di questi dati nella tua applicazione.
Puoi provare a fare tutto questo anche prima di addentrarti in app inventor, l'importante è trovare il sito che ti dia i dati in un formato quanto più possibile simile a una forma testuale o xml (perchè poi è più facile fare il parsing)
Spero di averti chiarito un pò le idee, semmai guarda anche i video dell'estrazione dati da sorgenti xml dove trovi altre informazioni utili.
ciao
Ciao Sebastiano e,prima di tutto,grazie per il gran lavoro che stai facendo : seguo il tuo blog da un bel pezzo e mi è di grandissima utilità!
RispondiEliminaSto cercando di sviluppare una app che, tra l'altro, scarichi file .pdf da un indirizzo specifico ... ho provato con il webviewer e con il componente web, ma non c'è stato nulla da fare ...o mi da errori 1109 0 1100 oppure - che è peggio - non fa assolutamente NULLA ! In teoria dovrebbe essere facile, quando clicko un pulsante web1.url viene settato ad un indirizzo, e poi lancio il web1.get ma non c'è nulla da fare, nemmeno se utilizzo il comando we1.gotfile B-(
Mi puoi dare una mano ? Grazie ...
Cosa vuoi fare poi col pdf? visualizzarlo con il lettore pdf eventualmente installato sul tuo telefono? utilizzarlo all'interno della tua app?
EliminaPerchè onestamente non penso che il componente web possa scaricare tutto un pdf e sopratutto non so poi come potresti visualizzarlo all'interno di App Inventor (non ci sono blocchi per la gestione dei pdf)
quello che puoi fare è far partire un activitystarter come per aprire una pagina web puntando all'indirizzo del file pdf (così lo scaricherà nel telefono, un pò come accade nella mia app acqua alta)
Altrimenti puoi usare sempre activitystarter e lanciare direttamente il programma per la visualizzazione pdf, però in questo caso il "problema" è che non tutti gli utenti potrebbero aver installato che ne so Adobe Reader.
Scrivimi per email cosa vuoi fare esattamente e vedo come posso aiutarti!
Innanzitutto grazie per la velocità B-)
RispondiEliminaL'idea è di lanciare il download del pdf che poi l'utente leggerà come e quando vorrà.Penso che si possa fare con il componente web,ma non riesco a farlo funzionare : o mi segnala degli errori (1109) o non fa proprio nulla ! Cosa mi puoi consigliare?
Nel frattempo...grazie!
Sbagliato! non si usa il componente web,tu vuoi semplicemente lanciare il browser all'indirizzo con il file pdf che ti interessa.
EliminaGuarda il tutorial sugli activitystarter (tipo quello di Google Maps) per avere le idee più chiare.
Ad ogni modo ti può essere utile anche il seguente esempio:
Opening a browser to a specified web page. Assuming the page you want to go to is "www.facebook.com" (feel free to substitute your own choice), set the properties to:
Action: android.intent.action.VIEW
DataUri: http://www.facebook.com
Al quale ovviamente devi collegare un pulsante che esegua poi l'activitystarter
PEFETTO !
EliminaProblema risolto B-)
Se riesco a finire in modo decoroso questa applicazioncina te lo faccio sapere !
PS grazie davvero
guardo...ci provo e ti faccio sapere ...
RispondiEliminaCiao Seba
RispondiEliminacomplimenti per i tutorial. Avrei bisogno del tuo aiuto. Ho provato il componente webviewer per visualizzare un video su youtube; la pagina viene caricata correttamente, ma il video non parte. Potresti cortesemente aiutarmi ?
Ciao e grazie mille !!!
la webview usa il broswer del telefono,quindi se il telefono non supporta flash o non lo ha installato il video probabilmente non parte.
EliminaSe youtube parte in html5 dovrebbe andare, onestamente non ho mai provato, semmai prova a linkare le pagine mobile di youtube (quelle che iniziano con m.youtube...)
Ciao Seba. Una domanda: dovre trovo il comando ...call "Notifie1Shortallert" Notice...che hai postato sotto al video?
RispondiEliminaGrazie ancora per questi tutorial spettacolari.
devi aggiungere in design editor il componente (non visibile) Notifier, si trova nella palette "Other"
Eliminadopodichè lo potrai usare anche nel blocks editor
Ciao, bel tutorial, mi piace molto questo blog tuoi video sono eccellenti e molto ben spiegato.
RispondiEliminaVorrei sapere come posso prendere i contenuti del mio sito Drupal 7.10 per un app.
se pudiras contattarmi via e-mail per spiegare più sarebbe buono.
Complimenti per il tuo eccellente blog e video
Ciao e ancora grazie per tutto quello che stai facendo. Credo di interpretare il desiderio di molti chiedendoti un tutorial sul metodo POSTFILE visto che in rete non si trova assolutamente nulla nemmeno in inglese. Io sto provando senza successo da qualche giorno a fare l'upload di un file dalla SD al PC. Il download da PC invece con il metodo GET non ha problemi. Potresti darci qualche dritta? Penso che sicuramente sbaglio la sintassi complessivamente e l'impostazione delle requestheaders...o sto cercando di fare qualcosa di impossibile??? P.s. come server uso HFS. Ciao
RispondiEliminapurtroppo di server web ne so poco e pertanto ho grosse difficoltà ad aiutarvi col metodo POST, quando avrò tempo proverò a guardarci ma la cosa mi sembra parecchio complicata.
EliminaHo letto nei gruppi in inglese di qualcuno che sta cercando di fare la stessa cosa, prova a vedere per esempio qua
http://ai.kittywolf.net/index.php/WolfWebEmail2
Ciao, ho risolto aggirando il problema installando easyphp server. In pratica invio una URL all'indirizzo di rete del PC tramite il componente web.La URL apre uno script php che effettua il download del file che voglio da telefono a PC.
EliminaCiao,
RispondiEliminasto provando ad estrarre dati da un file xml (feed rss). Fino a ieri tutto ok: ora mi ritorna l'errore 1101 - impossibile avere la risposta dall'URL. Come posso risolvere il problema?
Grazie
Potrebbe essere un errore temporaneo del server web? prova ad aspettare qualche ora e poi riprovare, se ancora non va o vieni sul forum e metti i blocchi che hai utilizzato o mandami il sorgente per email
EliminaMi sembra strano: se lo carico dal PC è tutto ok. Aspetto qualche ora sperando che tu abbia ragione. Come potrei mandarti i sorgenti via email o ppure mettere i blocchi sul forum?
EliminaGrazie
ho provato a creare il componente web ma mi da questo errore Bad argument list to csv row The operation list csv row cannot accept the arguments: "Eni",17.1500,"-1.49%. qualche mesetto fa ho visto che avevate consigliato a paolo-b di scaricare il mio sorgente, di cosa si tratta? Grazie in anticipo
RispondiEliminaCiao Ernesto,quell'errore viene dato di solito quando la funzione list from csv row non ha in ingresso dei valori formattati correttamente come .csv, può accadere perchè magari il server web non da una risposta valida (problema temporaneo) o perchè hai sbagliato qualcosa nel codice,prova a ricontrollare bene il tutto, eventualmente se hai ancora problemi puoi condividere il tuo progetto (facendo download source da my project) e caricarlo su google drive o un servizio simile, altrimenti puoi mettere uno screenshot dei blocchi utilizzati e postare nel forum il tuo problema.
EliminaCiao e complimenti per tutto il tuo operato. Sono un novizio e forse la mia domanda è un po' sempliciotta, ma come si recupera il testo API? Nel video non riesco a capire..
RispondiEliminaHo rivisto bene il video e ho capito il sistema. Mi rimane il dubbio su una cosa, nell' url inserisci il filtro nl1p2, se elimino p2 non mi compare la percentuale, quindi potrei invece inserire altri parametri per avere piu info come risultato? Se per esempio voglio aggiornamenti in diretta di una squadra di calcio, i filtri che che vanno immessi credo siano diversi, dove posso trovare spiegati questi tipi di filtri? ciao
RispondiEliminaTutto quello che inserisco nel testo del componente web non fa parte direttamente di App Inventor, ma sono appunto le "api" che vengono rese disponibili da alcuni siti (tipo nell'esempio yahoo finance) per estrapolare dei dati dal sito verso l'esterno (l'esterno in questo caso è la nostra app...)
EliminaQuindi nel caso delle tue domande specifiche dovresti cercare in internet informazioni sulla sintassi delle api di yahoo finance
Una rapida ricerca google ti porta ad esempio a questa pagina:
http://code.google.com/p/yahoo-finance-managed/wiki/csvQuotesDownload
dove trovi spiegato come costruire l'url per la restituzione di vari dati dal sito di YFinance
spero di averti un pò chiarito le idee! ciao
Tutto chiaro, ora ho una visione piu completa. Ho già trovato un sito (inglese) di football che fa per me. Certo che se esistesse nel web una lista dei siti che supportano questo tipo di trasmissione dati sarebbe tutto piu facile e intuitivo, provo a cercare...
RispondiEliminagrazie
Ciao Gurzu2, scusa se mi intrometto ma avrei anch' io la necessità di fare qualcosa del genere (cioè accedere ad un formato formattato, tipo xm o html dei risultati di calcio).
EliminaPotresti dirmi quale sito hai trovato e se sai già come ci si debba interfacciare con esso?
Grazie anticipatamente
Perdonami Seb e tutti gli amici che ti seguono se la mia domanda può sembrare, e lo è, veramente "terra terra"... nel momento in cui hai un "progetto" in testa e vorresti ottenere dei dati, come compi la ricerca sui siti o servizi che rilasciano API ?? O meglio come si riesce a sapere se c'è la possibilità di gestire delle API su un determinato sito ?
RispondiEliminaQuasi arrossisco per la mia domanda
la cosa più semplice è cercare con Google le parole chiave: nome del sito + api + documentation
Eliminaper esempio appunto con "yahoo finance api documentation"
oppure in italiano (ma spesso c'è poca documentazione in italiano)
Purtroppo non credo esista una lista esaustiva di tutte le api di tutti i siti esistenti, credo non sia una cosa fattibile.
Oppure parti con la parola chiave dei dati che vuoi caricare tramite api e cerchi allo stesso modo, che so "weather api documentation" e vedi quali siti eventualmente offrono
insomma, prima bisogna fare un lavoro certosino di ricerca ;)
tranquillo la domanda non è banale me l'hanno fatta in tanti :)
Grazie Seb, gentilissimo... come in AI inizierò a mettere insieme il puzle
Eliminascusa potrei farti una domanda, non riesco a trovate come fare un autenticazione ad un sito, quindi login e password per per entrare nella mia sezione , potresti aiutarmi? anche con un link
RispondiEliminaciao, non sono esperto in materia, prova a dare un occhio su questo sito:
Eliminahttp://puravidaapps.com/tutorials.php#taifunOA
Ciao complimenti per il gran lavoro:)
RispondiEliminaAvrei bisogno di un aiuto:Vorrei utilizzare le api di youtube per una app.Sul tuo video di esempio sono in csv mentre le api di youtube che ho trovato sono tipo :https://gdata.youtube.com/feeds/api/videos?=
Se provo con il tuo esempio non funziona.Dove sbaglio??Grazie mille!!!
non sbagli nulla, semplicemente se le api ti ritornano i valori in csv puoi leggere facilmente i dati nella tua app, invece se come nel tuo esempio ritorna una pagina (che mi sembra sia un feed rss in formato xml) allora il lavoro è molto più complicato perchè devi fare il "parsing" di tutta la pagina per estrarre i tag xml che ti interessano, se vuoi ci sono un paio di tutorial sull'xml che ti potrebbero schiarire le idee, ciao
EliminaIl comando Get genera un alert quando non c'è connessione internet che invade 1/3 del display. Per eliminarlo si deve riavviare il cellulare. Si dovrebbe scrivere una istruzione condizionale che interrompa la procedura quando manca la connessione. Come rilevare la mancanza del segnale? Grazie.
RispondiEliminaCiao, grazie per la segnalazione, è uno dei prossimi tutorial che voglio sviluppare, ad ogni modo bisogna controllare il response code della funzione web ed anche eventuali errori nell'applicazione stessa, ti farò sapere a breve la soluzione, ciao!
EliminaCiao....prima di tutto volevo farti i miei complimenti per tutti i tutorial...da poco uso app inventor ma trovo sicurezza nei tuoi tutorial !!! Grazie e spero che continuerai ;) ... Ho già provato quest'app nel mio telefono android e funziona....ma se io volessi fare un app che mi da le previsioni del meteo, che url dovrei mettere ?? Cioè tu hai messo "http//download.yahoo...." io cosa dovrei mettere ?? :D Grazie in anticipo !! :D
RispondiEliminaCiao, grazie per i complimenti, per modificare l'app e crearne una per le previsioni meteo devi trovare come si "costruisce" l'url per prendere le previsioni meteo (da yahoo per esempio), analizzare il file xml o html che ti ritorna la pagina e poi elaborarlo in app inventor per fare in modo di visualizzare solo i dati che ti interessano.
EliminaPuoi vedere un implementazione simile al seguente tutorial:
http://seblogapps.blogspot.it/2011/07/tutorial-17-importare-dati-da-pagina.html
oggi però non funziona più perchè le api di google weather sono state rimosse, il procedimento cmq sarà simile se si usano quelle di yahoo, ho anche in programma di fare un tutorial aggiornato sull'argomento, ma per ora guardati bene anche quello sperando che ti sia d'aiuto
ciao
Salve sebastiano vorrei crare proprio col componente WEB un'applicazione sul superenalotto come posso fare
RispondiEliminaCiao Raia,
Eliminabisogna trovare una sorgente affidabile in XML o RSS (o ancora meglio esistesse un API apposita)
che fornisca le ultime estrazioni del superenalotto, poi con un procedimento simile a questo tutorial (o al tutorial 51 appena pubblicato) si possono leggere e visualizzare le estrazioni.
Se trovo qualcosa ad-hoc ti faccio sapere, magari anche con un tutorial, ciao
Novità io onestamente non trovo nulla (sono la stessa persona)
EliminaComunque fai dei bellissimi tutorial sei bravissimo.
nel tal caso devi usare la tecnica del "web scraping" come spiego a grandi linee nel tutorial 38 (http://seblogapps.blogspot.it/2012/11/tutorial-38-importare-dati-da-una.html)
Eliminaovvero trovare almeno una pagina web che possibilmente non cambi nel formato nel tempo (altrimenti devi adattare ogni volta anche la tua app)
e che abbia le estrazioni del superenalotto (ad esempio) in una tabella html che è abbastanza facile da leggere (come mostro appunto nel tutorial con la classifica di serie A)
In alternativa ti puoi caricare tutta la pagina web (sempre col componente web) ad esempio questa:
http://www.estrazionedellotto.it/superenalotto/
e poi analizzare dove ci sono i numeri estratti nel file html ed usando le funzioni testuali di AI, estrarli per poi utilizzarli nella tua app.
Non è semplice ma è fattibile, ci vuole solo tempo e pazienza :)
Fortunatamente io ho tutti e due ma non so come fare si potrebbe fare come nel tuo tutorial 51 con l'estrazione di un xml??
EliminaVabbè non fa niente ho risolto sono riuscito a creare una bozza ti manderò i link nei commenti adesso non posso perché sto sul cellulare
RispondiEliminaCiao, ho una richiesta da farti ... sono abbonato ad una rivista online e con una url con parametri vari (user, password, data del giorno, ecc) riesco ad aprire, e salvare sul tablet, con il browser la rivista in pdf.
RispondiEliminaPosso usare il componente web x fare una app che mi scarichi direttamente il pdf senza passare per il browser?
Grazie, Ciao, Francesco
dovrebbe essere possibile, a patto che la URL possa essere inviata correttamente (nel senso che non ci sono chiavi od altri dati creati di volta in volta per l'autenticazione), non so che rivista sia ma mi pare strano sia così semplice scaricare un pdf dando solo l'url...
Eliminacmq se fosse così puoi usare il componente web, ed usare il metodo "SaveResponse" e "responsefilename" per salvare il tuo file pdf sul tablet.
Poi quando hai il file pdf puoi lanciare ad esempio adobe reader tramite activitystarter.
In linea teorica quindi si può fare! in bocca al lupo, facci sapere come va!
Grazie x la pronta risposta. Provo e vi tengo informati.
Eliminami potresti spiegare cortesemente come si puo' formattare l'uscita in modo da mostrare una tabella?
RispondiEliminati do il mio csv
https://docs.google.com/spreadsheet/pub?key=0AlSF7MwJfI-xdGEtSlcyUlZwQWVyV3h4UzV6WUZFVGc&output=csv
riesco a importare i dati ma non a formattarli in maniera da visualizzare in modo corretto le 4 colonne (incolonnarle ...)
e poi mi spuntano delle fastidiose ( ) in ogni riga
grazie seba
da csv non formatti nulla ma puoi solo prendere i dati "grezzi" che poi formatti nella tua app,
Eliminain pratica nell'app crei tante textbox quante sono ad esempio le tue righe e le tue colonne, poi ad ogni textbox imposti il valore andandolo a leggere dal file csv,
per farti capire guarda l'esempio dell'import da tabella html (quello della classifica di serie A), il procedimento è quello.
E come vedi li ad esempio ho impaginato le tre squadre coi tre punteggi (se ricordo bene).
Solo che così è un pò più lungo e laborioso ma almeno ti formatti te come vuoi i dati
Se invece usi la webview non ti so aiutare perchè non mi sono mai interessato molto su come si possa "impaginare" l'output in html da google docs, ma forse cercando su internet puoi trovare qualche informazione in più se e come si può fare questa cosa.
Non devi cmq visualizzare direttamente il risultato della get del componente web perchè altrimenti come hai visto ti escono le parentesi (che delimitano un dato dall'altro) e non hai le righe e le colonne ma hai tutto di seguito.
Spero di averti aiutato, ciao!
Come faccio se il sito è in aspx e non in csv?
RispondiEliminaNon è il sito che è in csv, ma è il formato che ti ritorna la query HTTP che fai con il componente web.
EliminaQuindi se il tuo sito è in aspx ma ti ritorna comunque il risultato in csv sei a posto,
altrimenti devi trovare un modo per ottenere gli stessi dati dalla tua pagina aspx ma in formato csv (penso devi agire lato server quindi devi essere te il proprietario del sito)
Non sono molto pratico di aspx, se ti ritorna tutto in forma testuale magari puoi programmarti te con app inventor delle funzioni che facciano il parsing ed estraggano i dati di tuo interesse
Questo commento è stato eliminato dall'autore.
Eliminaciao sono nuova in questa affascinante avventura
RispondiEliminavorrei sapere da voi se fosse possibile in app inventor mettere nell applicazione (sara' difficile spiegarmi...) una stringa di ricerca simile a google che mi fara' apparire i risultati di svariati siti in un unica ricerca Esempio:cerco una bicicletta usata a Roma e mi trovera' degli annunci su Roma su i vari siti e me li fara vedere in un unica pagina vi ringrazio anticipatamente
Sto creando un quiz Vero o Falso su MIT App Inventor 2. Ho creato 3 liste con una variabile globale Domande, Immagini e Risposte. Quando passo allo Screen2 appare l'errore:The operation select list item cannot accept the arguments: Dice che non è possibile selezionare un elemento dalle liste che ho creato. Devo inserire un indice? però se inserisco un indice non posso inserire Pick a Random Item. Non so come risolverlo.
RispondiElimina