{"id":642,"date":"2005-03-30T12:26:00","date_gmt":"2005-03-30T19:26:00","guid":{"rendered":"http:\/\/kodegeek.com\/blog\/?p=642"},"modified":"2005-03-30T12:26:00","modified_gmt":"2005-03-30T19:26:00","slug":"echando-codigo-mas-de-flickr-con-java-y-xml-rpc","status":"publish","type":"post","link":"http:\/\/kodegeek.com\/blog\/2005\/03\/30\/echando-codigo-mas-de-flickr-con-java-y-xml-rpc\/","title":{"rendered":"Echando c\u00f3digo: M\u00e1s de Flickr con Java y XML-RPC"},"content":{"rendered":"<p><img decoding=\"async\" src=\"http:\/\/www.flickr.com\/images\/flickr_logo_beta.gif\" \/><\/p>\n<p>Bueno, despu\u00e9s de resolver mi problema usando Perl y al <a href=\"http:\/\/www.flickr.com\/services\/api\/\">API de Flickr<\/a> decid\u00ed hacerlo ahora con Java; Pero en esta ocasi\u00f3n quise irme a bajo nivel ya que siempre me ha llamado la atenci\u00f3n el protocolo XML-RPC. Para procesar las peticiones y respuestas de XML-RPC utilizar\u00e9 el proyecto de <a href=\"http:\/\/ws.apache.org\/xmlrpc\/\">Jakarta XML-RPC<\/a>.<\/p>\n<p>Decid\u00ed empezar despacio, y como es la primera vez que uso el API, s\u00f3lo quiser obtener mi identificador de usuario num\u00e9rico usando mi nombre registrado (en esta caso josevnz). Lo primero que hay que hacer es familiarizarse con el uso de los tipos de datos de XML-RPC y su correspondientes tipos en Java. Una vez hecho esto y viendo el tipo de salida que nuestra librer\u00eda en Java deber\u00eda generar podemos empezar con el c\u00f3digo:<\/p>\n<style type=\"text\/css\"><!-- .syntax0 { color: #000000; } .syntax1 { color: #cc0000; } .syntax2 { color: #ff8400; } .syntax3 { color: #6600cc; } .syntax4 { color: #cc6600; } .syntax5 { color: #ff0000; } .syntax6 { color: #9966ff; } .syntax7 { background: #ffffcc; color: #ff0066; } .syntax8 { color: #006699; font-weight: bold; } .syntax9 { color: #009966; font-weight: bold; } .syntax10 { color: #0099ff; font-weight: bold; } .syntax11 { color: #66ccff; font-weight: bold; } .syntax12 { color: #02b902; } .syntax13 { color: #ff00cc; } .syntax14 { color: #cc00cc; } .syntax15 { color: #9900cc; } .syntax16 { color: #6600cc; } .syntax17 { color: #0000ff; } .syntax18 { color: #000000; font-weight: bold; } .gutter { background: #dbdbdb; color: #000000; } .gutterH { background: #dbdbdb; color: #990066; } --><br \/><\/style>\n<p><\/p>\n<pre><span class=\"gutter\">   1:<\/span><span class=\"syntax9\">package<\/span> com.blogspot.elangelnegro.flickr;<br \/><span class=\"gutter\">   2:<\/span><br \/><span class=\"gutter\">   3:<\/span><span class=\"syntax9\">import<\/span> java.util.ResourceBundle;<br \/><span class=\"gutter\">   4:<\/span><span class=\"syntax9\">import<\/span> java.util.Properties;<br \/><span class=\"gutterH\">   5:<\/span><span class=\"syntax9\">import<\/span> java.util.Vector;<br \/><span class=\"gutter\">   6:<\/span><span class=\"syntax9\">import<\/span> java.util.Hashtable;<br \/><span class=\"gutter\">   7:<\/span><br \/><span class=\"gutter\">   8:<\/span><span class=\"syntax9\">import<\/span> java.net.URL;<br \/><span class=\"gutter\">   9:<\/span><br \/><span class=\"gutterH\">  10:<\/span><span class=\"syntax9\">import<\/span> java.io.IOException;<br \/><span class=\"gutter\">  11:<\/span><br \/><span class=\"gutter\">  12:<\/span><span class=\"syntax9\">import<\/span> org.apache.xmlrpc.XmlRpcClient;<br \/><span class=\"gutter\">  13:<\/span><span class=\"syntax9\">import<\/span> org.apache.xmlrpc.XmlRpcException;<br \/><span class=\"gutter\">  14:<\/span><br \/><span class=\"gutterH\">  15:<\/span><span class=\"syntax3\">\/**<\/span><br \/><span class=\"gutter\">  16:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"><\/span><br \/><span class=\"gutter\">  17:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><br \/><span class=\"gutter\">  18:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"><\/span><br \/><span class=\"gutter\">  19:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><br \/><span class=\"gutterH\">  20:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">For<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">more<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">information<\/span><span class=\"syntax3\">,<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">please<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">check<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">following<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">URLS<\/span><span class=\"syntax3\">:<\/span><br \/><span class=\"gutter\">  21:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">ul<\/span><span class=\"syntax17\">&gt;<\/span><br \/><span class=\"gutter\">  22:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">li<\/span><span class=\"syntax17\">&gt;<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">a<\/span><span class=\"syntax17\"> <\/span><span class=\"syntax17\">href<\/span><span class=\"syntax17\">=<\/span><span class=\"syntax13\">\"<\/span><span class=\"syntax13\">http:\/\/www.flickr.com\/services\/api\/misc.urls.html<\/span><span class=\"syntax13\">\"<\/span><span class=\"syntax17\">&gt;<\/span><span class=\"syntax3\">Flickr<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">URL<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">format<\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">\/<\/span><span class=\"syntax17\">a<\/span><span class=\"syntax17\">&gt;<\/span><br \/><span class=\"gutter\">  23:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">li<\/span><span class=\"syntax17\">&gt;<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">a<\/span><span class=\"syntax17\"> <\/span><span class=\"syntax17\">href<\/span><span class=\"syntax17\">=<\/span><span class=\"syntax13\">\"<\/span><span class=\"syntax13\">http:\/\/www.flickr.com\/services\/api\/<\/span><span class=\"syntax13\">\"<\/span><span class=\"syntax17\">&gt;<\/span><span class=\"syntax3\">Description<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">of<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">API<\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">\/<\/span><span class=\"syntax17\">a<\/span><span class=\"syntax17\">&gt;<\/span><br \/><span class=\"gutter\">  24:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">li<\/span><span class=\"syntax17\">&gt;<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">a<\/span><span class=\"syntax17\"> <\/span><span class=\"syntax17\">href<\/span><span class=\"syntax17\">=<\/span><span class=\"syntax13\">\"<\/span><span class=\"syntax13\">http:\/\/www.flickr.com\/forums\/help\/5304\/<\/span><span class=\"syntax13\">\"<\/span><span class=\"syntax17\">&gt;<\/span><span class=\"syntax3\">The<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">problem<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">I<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">had<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">to<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">solve<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">:<\/span><span class=\"syntax3\">)<\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">\/<\/span><span class=\"syntax17\">a<\/span><span class=\"syntax17\">&gt;<\/span><br \/><span class=\"gutterH\">  25:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">li<\/span><span class=\"syntax17\">&gt;<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">a<\/span><span class=\"syntax17\"> <\/span><span class=\"syntax17\">href<\/span><span class=\"syntax17\">=<\/span><span class=\"syntax13\">\"<\/span><span class=\"syntax13\">http:\/\/ws.apache.org\/xmlrpc\/client.html<\/span><span class=\"syntax13\">\"<\/span><span class=\"syntax17\">&gt;<\/span><span class=\"syntax3\">Apache<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">XML<\/span><span class=\"syntax3\">-<\/span><span class=\"syntax3\">RPC<\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">\/<\/span><span class=\"syntax17\">a<\/span><span class=\"syntax17\">&gt;<\/span><br \/><span class=\"gutter\">  26:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">\/<\/span><span class=\"syntax17\">ul<\/span><span class=\"syntax17\">&gt;<\/span><br \/><span class=\"gutter\">  27:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><br \/><span class=\"gutter\">  28:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span><br \/><span class=\"gutter\">  29:<\/span><span class=\"syntax8\">public<\/span> <span class=\"syntax8\">final<\/span> <span class=\"syntax10\">class<\/span> FlickrBackup <span class=\"syntax18\">{<\/span><br \/><span class=\"gutterH\">  30:<\/span>    <br \/><span class=\"gutter\">  31:<\/span>        <span class=\"syntax8\">private<\/span> <span class=\"syntax8\">static<\/span> <span class=\"syntax8\">final<\/span> ResourceBundle BUNDLE <span class=\"syntax18\">=<\/span><br \/><span class=\"gutter\">  32:<\/span>                ResourceBundle.<span class=\"syntax6\">getBundle<\/span>(FlickrBackup.<span class=\"syntax10\">class<\/span>.<span class=\"syntax6\">getName<\/span>());<br \/><span class=\"gutter\">  33:<\/span>            <br \/><span class=\"gutter\">  34:<\/span>        <span class=\"syntax8\">private<\/span> <span class=\"syntax8\">static<\/span> <span class=\"syntax8\">final<\/span> Properties CONFIG <span class=\"syntax18\">=<\/span> System.<span class=\"syntax6\">getProperties<\/span>();<br \/><span class=\"gutterH\">  35:<\/span>    <br \/><span class=\"gutter\">  36:<\/span>        <span class=\"syntax3\">\/**<\/span><br \/><span class=\"gutter\">  37:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><br \/><span class=\"gutter\">  38:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@param<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">args<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Command<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">line<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">args<\/span><br \/><span class=\"gutter\">  39:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">ul<\/span><span class=\"syntax17\">&gt;<\/span><br \/><span class=\"gutterH\">  40:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">li<\/span><span class=\"syntax17\">&gt;<\/span><span class=\"syntax3\">args<\/span><span class=\"syntax3\">[<\/span><span class=\"syntax3\">0<\/span><span class=\"syntax3\">]<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Is<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Flickr<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">user<\/span><br \/><span class=\"gutter\">  41:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">li<\/span><span class=\"syntax17\">&gt;<\/span><span class=\"syntax3\">args<\/span><span class=\"syntax3\">[<\/span><span class=\"syntax3\">1<\/span><span class=\"syntax3\">]<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">is<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">password<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">for<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">that<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">account<\/span><br \/><span class=\"gutter\">  42:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">li<\/span><span class=\"syntax17\">&gt;<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">args<\/span><span class=\"syntax3\">[<\/span><span class=\"syntax3\">2<\/span><span class=\"syntax3\">]<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">is<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">directory<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">where<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">we<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">will<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">save<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">all<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">photos<\/span><br \/><span class=\"gutter\">  43:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax17\">&lt;<\/span><span class=\"syntax17\">\/<\/span><span class=\"syntax17\">ul<\/span><span class=\"syntax17\">&gt;<\/span><br \/><span class=\"gutter\">  44:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax12\">@throws<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">Exception<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">if<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">there<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">is<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">any<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">error<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">while<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">downloading<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">the<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">pictures<\/span><br \/><span class=\"gutterH\">  45:<\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\"> <\/span><span class=\"syntax3\">*\/<\/span><br \/><span class=\"gutter\">  46:<\/span>        <span class=\"syntax8\">public<\/span> <span class=\"syntax8\">static<\/span> <span class=\"syntax10\">void<\/span> <span class=\"syntax6\">main<\/span>(String [] args) <span class=\"syntax8\">throws<\/span> Exception <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  47:<\/span>                        Vector params <span class=\"syntax18\">=<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">Vector<\/span>();<br \/><span class=\"gutter\">  48:<\/span>                        Hashtable struct <span class=\"syntax18\">=<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">Hashtable<\/span>();<br \/><span class=\"gutter\">  49:<\/span>                        XmlRpcClient xmlrpc <span class=\"syntax18\">=<\/span> <span class=\"syntax14\">null<\/span>;<br \/><span class=\"gutterH\">  50:<\/span>                        <span class=\"syntax8\">try<\/span> <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  51:<\/span>                                xmlrpc <span class=\"syntax18\">=<\/span> <span class=\"syntax8\">new<\/span> <span class=\"syntax6\">XmlRpcClient<\/span>(<br \/><span class=\"gutter\">  52:<\/span>                                        BUNDLE.<span class=\"syntax6\">getString<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">com.blogspot.elangelnegro.flickr.FlickrBackup.xmlrpc.url<\/span><span class=\"syntax13\">\"<\/span>)<br \/><span class=\"gutter\">  53:<\/span>                                );<br \/><span class=\"gutter\">  54:<\/span>                            <br \/><span class=\"gutterH\">  55:<\/span>                                struct.<span class=\"syntax6\">put<\/span>(<br \/><span class=\"gutter\">  56:<\/span>                                        <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">api_key<\/span><span class=\"syntax13\">\"<\/span>,<br \/><span class=\"gutter\">  57:<\/span>                                        BUNDLE.<span class=\"syntax6\">getString<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">com.blogspot.elangelnegro.flickr.FlickrBackup.xmlrpc.key<\/span><span class=\"syntax13\">\"<\/span>)<br \/><span class=\"gutter\">  58:<\/span>                                );<br \/><span class=\"gutter\">  59:<\/span>                                struct.<span class=\"syntax6\">put<\/span>(<br \/><span class=\"gutterH\">  60:<\/span>                                        <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">username<\/span><span class=\"syntax13\">\"<\/span>,<br \/><span class=\"gutter\">  61:<\/span>                                        args[<span class=\"syntax5\">0<\/span>]<br \/><span class=\"gutter\">  62:<\/span>                                );<br \/><span class=\"gutter\">  63:<\/span>                                params.<span class=\"syntax6\">add<\/span>(struct);<br \/><span class=\"gutter\">  64:<\/span>                                String result <span class=\"syntax18\">=<\/span><br \/><span class=\"gutterH\">  65:<\/span>                                        (String) xmlrpc.execute (<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">flickr.people.findByUsername<\/span><span class=\"syntax13\">\"<\/span>, params);<br \/><span class=\"gutter\">  66:<\/span>                                System.out.<span class=\"syntax6\">println<\/span>(<br \/><span class=\"gutter\">  67:<\/span>                                        BUNDLE.<span class=\"syntax6\">getString<\/span>(<span class=\"syntax13\">\"<\/span><span class=\"syntax13\">com.blogspot.elangelnegro.flickr.FlickrBackup.main.messages<\/span><span class=\"syntax13\">\"<\/span>) <span class=\"syntax18\">+<\/span><br \/><span class=\"gutter\">  68:<\/span>                                        <span class=\"syntax13\">\"<\/span><span class=\"syntax13\">:<\/span><span class=\"syntax13\"> <\/span><span class=\"syntax13\">\"<\/span> <span class=\"syntax18\">+<\/span><br \/><span class=\"gutter\">  69:<\/span>                                        result<br \/><span class=\"gutterH\">  70:<\/span>                                );<br \/><span class=\"gutter\">  71:<\/span>                        <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">catch<\/span> (XmlRpcException xmlexp) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  72:<\/span>                                <span class=\"syntax8\">throw<\/span> xmlexp;<br \/><span class=\"gutter\">  73:<\/span>                        <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">catch<\/span> (IOException ioexp) <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  74:<\/span>                                <span class=\"syntax8\">throw<\/span> ioexp;<br \/><span class=\"gutterH\">  75:<\/span>                        <span class=\"syntax18\">}<\/span> <span class=\"syntax8\">finally<\/span> <span class=\"syntax18\">{<\/span><br \/><span class=\"gutter\">  76:<\/span>                                struct.<span class=\"syntax6\">clear<\/span>();<br \/><span class=\"gutter\">  77:<\/span>                                params.<span class=\"syntax6\">clear<\/span>();<br \/><span class=\"gutter\">  78:<\/span>                        <span class=\"syntax18\">}<\/span><br \/><span class=\"gutter\">  79:<\/span>        <span class=\"syntax18\">}<\/span><br \/><span class=\"gutterH\">  80:<\/span>    <br \/><span class=\"gutter\">  81:<\/span><span class=\"syntax18\">}<\/span><br \/><\/pre>\n<p>Y el correspondiente archivo de propiedades:<\/p>\n<style type=\"text\/css\"><!-- .syntax0 { color: #000000; } .syntax1 { color: #cc0000; } .syntax2 { color: #ff8400; } .syntax3 { color: #6600cc; } .syntax4 { color: #cc6600; } .syntax5 { color: #ff0000; } .syntax6 { color: #9966ff; } .syntax7 { background: #ffffcc; color: #ff0066; } .syntax8 { color: #006699; font-weight: bold; } .syntax9 { color: #009966; font-weight: bold; } .syntax10 { color: #0099ff; font-weight: bold; } .syntax11 { color: #66ccff; font-weight: bold; } .syntax12 { color: #02b902; } .syntax13 { color: #ff00cc; } .syntax14 { color: #cc00cc; } .syntax15 { color: #9900cc; } .syntax16 { color: #6600cc; } .syntax17 { color: #0000ff; } .syntax18 { color: #000000; font-weight: bold; } .gutter { background: #dbdbdb; color: #000000; } .gutterH { background: #dbdbdb; color: #990066; } --><br \/><\/style>\n<p><\/p>\n<pre><span class=\"gutter\">   1:<\/span><span class=\"syntax8\">com<\/span><span class=\"syntax8\">.<\/span><span class=\"syntax8\">blogspot<\/span><span class=\"syntax8\">.<\/span><span class=\"syntax8\">elangelnegro<\/span><span class=\"syntax8\">.<\/span><span class=\"syntax8\">flickr<\/span><span class=\"syntax8\">.<\/span><span class=\"syntax8\">FlickrBackup<\/span><span class=\"syntax8\">.<\/span><span class=\"syntax8\">xmlrpc<\/span><span class=\"syntax8\">.<\/span><span class=\"syntax8\">url<\/span>=http:\/\/www.flickr.com\/services\/xmlrpc\/<br \/><span class=\"gutter\">   2:<\/span><span class=\"syntax1\">#<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">Old<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">key:<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">24e618762a874d9ff507d255dd95f854<\/span><br \/><span class=\"gutter\">   3:<\/span><span class=\"syntax8\">com<\/span><span class=\"syntax8\">.<\/span><span class=\"syntax8\">blogspot<\/span><span class=\"syntax8\">.<\/span><span class=\"syntax8\">elangelnegro<\/span><span class=\"syntax8\">.<\/span><span class=\"syntax8\">flickr<\/span><span class=\"syntax8\">.<\/span><span class=\"syntax8\">FlickrBackup<\/span><span class=\"syntax8\">.<\/span><span class=\"syntax8\">xmlrpc<\/span><span class=\"syntax8\">.<\/span><span class=\"syntax8\">key<\/span>=XXXXXX<br \/><span class=\"gutter\">   4:<\/span><span class=\"syntax1\">#<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">Connecting<\/span><span class=\"syntax1\"> <\/span><span class=\"syntax1\">as<\/span><br \/><span class=\"gutterH\">   5:<\/span><span class=\"syntax8\">com<\/span><span class=\"syntax8\">.<\/span><span class=\"syntax8\">blogspot<\/span><span class=\"syntax8\">.<\/span><span class=\"syntax8\">elangelnegro<\/span><span class=\"syntax8\">.<\/span><span class=\"syntax8\">flickr<\/span><span class=\"syntax8\">.<\/span><span class=\"syntax8\">FlickrBackup<\/span><span class=\"syntax8\">.<\/span><span class=\"syntax8\">main<\/span><span class=\"syntax8\">.<\/span><span class=\"syntax8\">messages<\/span>=Connecting as<br \/><\/pre>\n<p>La corrida de ejemplo es:<\/p>\n<blockquote><p>[josevnz@localhost FlickrBackup]$ <span style=\"color: rgb(0, 153, 0);\">java -jar dist\/FlickrBackup-1.0.jar sdelmont<\/span><br \/>Exception in thread &#8220;main&#8221; org.apache.xmlrpc.XmlRpcException: User not found<br \/>       at org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java:457)<br \/>       at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java:163)<br \/>       at com.blogspot.elangelnegro.flickr.FlickrBackup.main(FlickrBackup.java:64)<br \/>[josevnz@localhost FlickrBackup]$<span style=\"color: rgb(0, 153, 0);\"> java -jar dist\/FlickrBackup-1.0.jar novato<\/span><br \/>Connecting as:<br \/>       <user id=\"26233527@N00\" nsid=\"26233527@N00\"><br \/>               <username>Novato<\/username><br \/>       <\/user><\/p>\n<p>[josevnz@localhost FlickrBackup]$<\/p><\/blockquote>\n<p>Hmmm, no me devuelve una estructura sino el XML. Me sale usar un DOM para procesar el XML.<\/p>\n<p>Por cierto, buscando en Google, me consegu\u00ed <a href=\"http:\/\/www.ludicorp.com\/flickr\/flickr_services.ppt\">esta presentaci\u00f3n<\/a> de Power Point y Flickr. Realmente interesante, no importa si usted es un desarrollador o un administrador de redes ya que tiene para satisfacer la curiosidad de todos. Definitivamente Flickr <a href=\"http:\/\/www.oreillynet.com\/pub\/a\/network\/2005\/02\/04\/sb_flckr.html?page=last&amp;x-showcontent=text\">es la compa\u00f1ia de la cual todo el mundo<\/a> est\u00e1 hablando (despu\u00e9s de Google) y ahora que Yahoo la compr\u00f3, su futuro financiero est\u00e1 asegurado.<\/p>\n<p>No pienso colocar el c\u00f3digo esta vez. Voy a completarlo y pienso mostrar la aplicaci\u00f3n completa en cuanto la tenga lista.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bueno, despu\u00e9s de resolver mi problema usando Perl y al API de Flickr decid\u00ed hacerlo ahora con Java; Pero en esta ocasi\u00f3n quise irme a bajo nivel ya que siempre me ha llamado la atenci\u00f3n el protocolo XML-RPC. Para procesar las peticiones y respuestas de XML-RPC utilizar\u00e9 el proyecto de Jakarta XML-RPC. Decid\u00ed empezar despacio, <a class=\"read-more\" href=\"http:\/\/kodegeek.com\/blog\/2005\/03\/30\/echando-codigo-mas-de-flickr-con-java-y-xml-rpc\/\">[&hellip;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[],"tags":[],"_links":{"self":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts\/642"}],"collection":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/comments?post=642"}],"version-history":[{"count":0,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/posts\/642\/revisions"}],"wp:attachment":[{"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/media?parent=642"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/categories?post=642"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/kodegeek.com\/blog\/wp-json\/wp\/v2\/tags?post=642"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}