{"id":3435,"date":"2010-05-27T10:57:08","date_gmt":"2010-05-27T08:57:08","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=3435"},"modified":"2011-07-25T10:23:55","modified_gmt":"2011-07-25T08:23:55","slug":"t046-accedere-a-flickr-dalle-nostre-applicazioni-iphone-parte-1","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/t046-accedere-a-flickr-dalle-nostre-applicazioni-iphone-parte-1\/","title":{"rendered":"T#046 &#8211; Accedere a Flickr dalle nostre applicazioni iPhone (parte 1)"},"content":{"rendered":"<p><a href=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/05\/logo_flickr.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/05\/logo_flickr.jpg\" alt=\"Logo Flickr\" title=\"logo_flickr\" width=\"223\" height=\"111\" class=\"alignleft size-full wp-image-3494\" \/><\/a> In questo tutorial cercheremo di costruire insieme un&#8217;applicazione perfettamente funzionante che racchiuda parte dei concetti che abbiamo gi\u00e0 trattato in altri toutorial e concetti nuovi che verranno affrontati qui per la prima volta.<\/p>\n<p>Come sempre cercher\u00f2 di costruire l&#8217;applicazione per approssimazioni successive, ponendo l&#8217;accento su quelli che possono essere gli errori pi\u00f9 comuni nello sviluppo di un app completa.<\/p>\n<p>In questa prima parte non ci occuperemo della parte di sviluppo su iphone, ma sar\u00e0 una introduzione generale all&#8217;utilizzo delle <strong>API di Flickr<\/strong> ed al <strong>protocollo REST<\/strong> in genere.<!--more--><\/p>\n<h4>Il progetto:<\/h4>\n<p>L&#8217;applicazione che vogliamo realizzare \u00e8 un semplice cient per Flickr, quello che vogliamo fare \u00e8 riuscire a scaricare e visulizzare le foto che flickr marca come &#8220;interessanti&#8221;. Questo elenco viene aggiornato quotidianamente quindi ogni giorno l&#8217;applicazione fornir\u00e0 foto diverse.<\/p>\n<p>Suppongo che tutti i lettori conoscano il servizio offerto da Flickr (in caso contrario vi esorto a visitare il sito <a href=\"http:\/\/www.flickr.com\/\" target=_blank\">flickr.com<\/a>), ma magari non tutti sanno che flickr offre un ottimo e documentatissimo seti di API (Application Programming Interface) per accedere al suo database.<\/p>\n<p>Ma come si fa ad usare queste API? Flickr mette a disposizione ben tre sistemi diversi, SOAP, XML-RPC e REST. Per la sua semplicit\u00e0 e versatilit\u00e0 noi utilizzeremo proprio quest&#8217;ultimo. Accedere alle API flickr tramite REST significa, in breve, costruire un particolare URL secondo le istruzioni fornite da flickr stesso, effettuare una chiamata HTTP su questo URL e analizzare il contenuto della risposta del server. Pi\u00f9 facile a farsi che a dirsi, sar\u00e0 tutto pi\u00f9 chiaro proseguendo nella lettura.<\/p>\n<h4>Iniziamo:<\/h4>\n<p>La prima cosa da fare \u00e8 quella di registrarsi su Flickr e richiedere una propria <strong>API_KEY<\/strong>, una stringa alfanumerica che servir\u00e0 per identificare le nostre applicazioni.<\/p>\n<p>La pagina da visistare \u00e8 questa:<\/p>\n<p><a href=\"http:\/\/www.flickr.com\/services\/api\/\" target=\"_blank\">http:\/\/www.flickr.com\/services\/api\/<\/a><\/p>\n<p>Una volta registrati potremo cliccare sul link &#8220;<em>api keys<\/em>&#8221; per richiedere la nostra key personale.<\/p>\n<p>Ottenuta la nostra chiave, diamo uno sguardo alla pagina <a href=\"http:\/\/www.flickr.com\/services\/api\/\" target=\"_blank\">http:\/\/www.flickr.com\/services\/api\/<\/a>, da questa pagina \u00e8 possibile accedere a tutta la documentazione che flickr fornisce per le sue api.<\/p>\n<p>Cliccando su &#8220;request formats &#8211; REST&#8221; prendiamo nota che gl indirizzi URL da realizzare sono nella forma:<\/p>\n<pre lang=\"text\" line=\"1\" escaped=\"true\">\r\nhttp:\/\/api.flickr.com\/services\/rest\/?method=flickr.test.echo&name=value\r\n<\/pre>\n<p>In questo caso stiamo chiamando la funzione &#8220;flickr.test.echo&#8221; passando &#8220;value&#8221; come argomento per il parametro &#8220;name&#8221;.<\/p>\n<p>Ottenute queste informazioni generali, possiamo vedere nello specifico la funzione  <strong>flickr.interestingness.getList<\/strong> a questa pagina:<\/p>\n<p><a href=\"http:\/\/www.flickr.com\/services\/api\/flickr.interestingness.getList.html\" target=\"_blank\">http:\/\/www.flickr.com\/services\/api\/flickr.interestingness.getList.html<\/a><\/p>\n<p>questa funzione restituisce la lista delle foto interessanti del giorno stesso e della data specificata, e richiede come unico parametro non opzionale la propria api key<\/p>\n<p>L&#8217;url quindi da interrogare sar\u00e0 questo:<\/p>\n<pre lang=\"text\" line=\"1\" escaped=\"true\">\r\nhttp:\/\/api.flickr.com\/services\/rest\/?method=flickr.interestingness.getList&api_key=aa9999a999999999999aa999aa999a99\r\n<\/pre>\n<p>(ovviamente al posto di &#8220;<em>aa9999a999999999999aa999aa999a99<\/em>&#8221; dovete inserire la vostra apikey)<\/p>\n<p>Possiamo fare gi\u00e0 una prima prova, apriamo il nostro browser e copiamo nella barra dell&#8217;indirizzo l&#8217;url che abbiamo costruito e premiamo invio. quello che vedremo sar\u00e0 un file XML contentente tutte le informazioni necessarie per recuperare e visualizzare le \u00a0immagini.<\/p>\n<p>(con alcuni browser, tra cui Chrome e Safari, viene visualizzata una pagina bianca, in quel caso bisogna semplicemente visualizzare il sorgente della pagina per esaminare il file XML).<\/p>\n<p>La risposta di flickr ha questa struttura:<\/p>\n<pre lang=\"text\" line=\"1\" escaped=\"true\">\r\n<rsp stat=\"ok\">\r\n<photos page=\"1\" pages=\"5\" perpage=\"100\" total=\"500\">\r\n<photo id=\"4615393244\" owner=\"9049132@N04\" secret=\"e2e21720d6\" server=\"3360\" farm=\"4\" title=\"my good boy &amp;amp; my new toy\" ispublic=\"1\" isfriend=\"0\" isfamily=\"0\" \/>\r\n<photo id=\"4614986043\" owner=\"41049110@N02\" secret=\"3222884afd\" server=\"4051\" farm=\"5\" title=\"Mountain Hare Rolling in Snow\" ispublic=\"1\" isfriend=\"0\" isfamily=\"0\" \/>\r\n<photo id=\"4615636115\" owner=\"32131681@N00\" secret=\"a38974b053\" server=\"4066\" farm=\"5\" title=\"Cully\" ispublic=\"1\" isfriend=\"0\" isfamily=\"0\" \/>\r\n<\/photos>\r\n<\/rsp>\r\n<\/pre>\n<p>Resta da capire come ottenere, a partire da questo file xml l&#8217;immagine in questione!<\/p>\n<p>Per far questo baster\u00e0 consultare la solita documentazione fornita da flickr visibile a questo indirizzo:<\/p>\n<p><a href=\"http:\/\/www.flickr.com\/services\/api\/misc.urls.html\" target=\"_blank\">http:\/\/www.flickr.com\/services\/api\/misc.urls.html<\/a><\/p>\n<p>La pagina \u00e8 in inglese, ma credo che gli esempi siano piuttosto chiari, lo schema url che useremo sar\u00e0 il seguente:<\/p>\n<pre lang=\"text\" line=\"1\" escaped=\"true\">\r\nhttp:\/\/farm{farm-id}.static.flickr.com\/{server-id}\/{id}_{secret}.jpg\r\n<\/pre>\n<p>per visualizzare la prima foto presente nel file xml quindi sar\u00e0 visibile all&#8217;indirizzo:<\/p>\n<pre lang=\"text\" line=\"1\" escaped=\"true\">\r\nhttp:\/\/farm4.static.flickr.com\/3360\/4615393244_e2e21720d6.jpg\r\n<\/pre>\n<p>A questo punto possiamo avere gi\u00e0 un&#8217;idea di come dovr\u00e0 funzionare na nostra applicazione, per prima cosa dovr\u00e0 scaricare il file xml contenente tutte le informazioni necessarie, poi bisogner\u00e0 parsare questo file per ottenere i singoli valori (leggete l&#8217;ottimo <a href=\"http:\/\/www.devapp.it\/wordpress\/t042-come-utilizzare-xml-nelle-nostre-applicazioni-iphone-sdk.html\" target=\"_blank\">tutorial di Andrea Busi<\/a> a tal proposito) e successivamente potremo costruire tutti gli url delle immagini per visualizzarle e salvarle sul nostro iphone.<\/p>\n<p>alla prossima puntata!<\/p>\n<p style=\"text-align: center\"><a href=\"http:\/\/www.devapp.it\/wordpress\/supporto-applicazioni\/parole-vietate-di-ignazio-calo\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2010\/02\/bannerIgnazioc.png\" alt=\"\" width=\"480\" height=\"100\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In questo tutorial cercheremo di costruire insieme un&#8217;applicazione perfettamente funzionante che racchiuda parte dei concetti che abbiamo&#8230;<\/p>\n","protected":false},"author":53,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[240,238,241,239,1],"class_list":["post-3435","post","type-post","status-publish","format-standard","hentry","category-tutorial-pratici","tag-api-flickr","tag-flickr","tag-ignazio-calo","tag-rest","tag-tutorial-pratici"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/3435","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/53"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=3435"}],"version-history":[{"count":20,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/3435\/revisions"}],"predecessor-version":[{"id":7298,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/3435\/revisions\/7298"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=3435"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=3435"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=3435"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}