Problema con Flash y RSS desde Blogger.com
Hola!
Les cuento que mi cliente tiene un blog alojado en Blogger.com, del cual debo tomar los titulares que se generan mediante el feed (RSS), para llevarlos a un lector de Rss hecho en flash en otro sitio web que estoy desarrollando.
(Este otro sitio web está alojado en un servidor aparte).
El problema es que cuando veo el flash que está publicado en la web, este no carga el feed... Pero cuando lo ejecuto desde los archivos locales de mi computadora, carga y muestra perfectamente los titulares del blog!
En algún lugar pude leer que el .swf debe estar alojado en el mismo servidor que el Blog (pero esta no es la solución más práctica).
También probé de publicar el blog en feedburner.com para tomar el feed desde la url que ellos proveen, pero pasa exáctamente lo mismo.
Si alguien pudiese darme una ayuda se lo agradecería muchísimo!!!
Saludos!
Diego
dagi3d
Efectivamente se trata de un problema con la política de seguridad del reproductor de flash, que obliga a que el recurso que estás intentando leer esté en el mismo dominio que la película.
Esto normalmente se soluciona dando permiso utilizando el fichero crossdomain.xml indicando ahí tu dominio. Como parece que no es una solución factible, la solución pasa por crear un script en tu lenguaje de servidor favorito(o el que más rabia te dé), que esté alojado en el mismo dominio que tu swf y que lo único que haría sería leer el fichero que quieras y devolverlo al navegador. Así tu podrías hacer la petición desde tu película a tu script a modo de proxy saltándote las restricciones
diegustin
Muchas gracias por tu respuesta!!
Ahora entiendo mejor cual es el problema...
Si mal no entendí, el paso a seguir es crear un proxy. Lo haría en php, tomando como referencia este pequeño tutorial:
http://blog.unijimpe.net/proxy-en-php/
Y el código sería algo así:
<?php $vfile = "http://blogname.blogspot.com/feeds/posts/default?alt=rss";
if (isset($_GET['rss'])){
$vfile = $_GET['rss'];
}
header("Content-type: text/xml");
readfile($vfile);
?>
Ahora la pregunta... cómo podría hacer para llamar a ese archivo .php desde mi archivo flash?
El código de mi actionscript es el siguiente:
// URL DEL BLOG
var rssURL:String = "http://blogname.blogspot.com/feeds/posts/default?alt=rss";
var rssXML:URLRequest = new URLRequest(rssURL);
var myLoader:URLLoader = new URLLoader(rssXML);
myLoader.addEventListener("complete", xmlLoaded);
function xmlLoaded(evtObj:Event) {
var rss:XML = new XML(myLoader.data);
//trace(rss)
var vtit:String = rss.child(0).title;
var vurl:String = rss.child(0).link;
var vdes:String = rss.child(0).description;
var comentarios:String = rss.child(0).commentRss;
trace(comentarios)
var vcon:String = "";
for each (var nodo:XML in rss..item) {
vcon += ""+nodo.title+"";
vcon += "<br>"+nodo.description+"<br><br>";
vcon +="<br>"+nodo.comentarios+"<br>"
}
txttitle.htmlText = ""+vtit+"";
txtdescription.text = vdes;
txtcontent.text=comentarios;
txtcontent.htmlText = vcon;
}
//FUNCIONALIDAD PARA EL SCROLL
//EN WINDOWS EL SCROLL FUNCIONA CON EL SCROLLER DEL MOUSE
up_btn.addEventListener(MouseEvent.CLICK, scrollUp);
down_btn.addEventListener(MouseEvent.CLICK, scrollDown);
function scrollUp(Event:MouseEvent):void {
txtcontent.scrollV -=5;
}
function scrollDown(Event:MouseEvent):void {
txtcontent.scrollV +=5;
}
Desde ya mil gracias!!!
Diego
diegustin
Ya lo solucioné... era más simple de lo que imaginaba!
Dentro del actionscript tuve que reemplazar la url de mi blog por el vínculo al .php:
var rssURL:String = "proxy.php";
Gracias dagi3d por tu respuesta,
Saludos!
Diego