Archief - Actionscript + XML

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Recipe4hate

Legacy Member
Hallo

Ik probeer in Actionscript 3 iets te schrijven, zodat ik afbeeldingen van een bepaald persoon van op deviantart.com kan bekijken. Ik doe dit via de RSS-xml van op deviantart.com zelf. Nu, offline werkt alles perfect, maar wanneer ik mijn swf online zet, krijg ik problemen. De taakbalk van mijn browser vermeldt: bezig met laden van backend.deviantart.com maar voor de rest gebeurt er niets. Ik heb een sterk vermoeden dat dit met beveiliging te maken heeft, aangezien ik op 2 verschillende domains zit. Hoe kan dit euvel verholpen worden?
Alvast bedankt.

Lord_Palethorn

Legacy Member
euhm als ik mij niet vergis moet er op de server van deviantart ne crossdomain.xml aanwezig zijn die u toelating geeft, dus als ge da ni hebt.. vergeetet :)

Kan wel zijnd at dit verandert is sinds AS3

Recipe4hate

Legacy Member
Kan iemand me eens uitleggen wat zo'n crossdomain is en precies doet?

Recipe4hate

Legacy Member
Merci Bigbuddha, da's best interessant. Maar er staat echter niet bij hoe ik dit concreet gebruik. Moet ik zelf nog een handeling uitvoering met die crossdomain? Of zoekt flashplayer er automatisch naar?

Bigbuddha

Legacy Member
google, your friend

loadPolicyFile

System.security.loadPolicyFile() gebruik je dus in je swf om toegang te vragen aan het externe domein.

Recipe4hate

Legacy Member
Bedankt Bigbuddha!
Ik heb gemerkt dat deviantart een crossdomain heeft.
Ik laad deze in, en toch krijg ik nog steeds niets te zien. Ik moet wel toevoegen dat ik niet alleen een xml, maar ook afbeeldingen op deze manier willen binnenkrijgen. Gaat dit? Of heb ik hiervoor weet een beveilingscheck nodig?

Bigbuddha

Legacy Member
normaal gezien zou dit geen probleem mogen geven. Anders gewoon even je basis code posten, dan kunnen we het bekijken.

Recipe4hate

Legacy Member
Dit is de crossdomain.xml van deviantart:
Code:
<cross-domain-policy>
<allow-access-from domain="*.deviantart.com"/>
</cross-domain-policy>

en dit is de code. (hou er rekening mee dat dit een testje is en dat 't ook niet ordelijk en volledig correct is. Ik maak altijd een testapplicatie vooraleer ik aan het echte project begin. Misschien niet de beste workflow, maar 't onthoudt wel beter. Ook heb ik gewoon een random user van de deviantart mainpage gebruikt.
Code:
//DEVIANT ART TEST

//VARS
var Path:URLRequest = new URLRequest("http://backend.deviantart.com/rss.xml?q=gallery%3Atickledpinky%2F748594&type=deviation&offset=0");
var Load:URLLoader = new URLLoader();
var Media:Namespace = new Namespace("http://search.yahoo.com/mrss/");

var xml:XML = new XML();
var xmlList:XMLList = new XMLList();

var sprt:Sprite = new Sprite()
var firstLoad:Boolean = true;

//DEVIANTART PERMISSION
Security.loadPolicyFile("http://www.deviantart.com/");

//COMMONS SETS
myList.addEventListener(Event.CHANGE, changeImage);
Load.addEventListener(Event.COMPLETE, addFiles);
Load.load(Path);

//FUNCTIONS
function addFiles(e:Event):void
{
	sprt.x = 700;
	sprt.y = 10;
	stage.addChild(sprt);
	
	xml = XML(e.target.data);
	xmlList = xml.channel.item;
	for(var i:Number = 0; i<xmlList.length(); i++)
	{
		//trace(xmlList[i].title);
		//trace(xmlList[i].Media::content.@url[0]);
		myList.addItem({data:xmlList.Media::content.@url[i][0], 
					   label:xmlList.Media::content.@url[i][0]});
	}
}

function changeImage(e:Event):void
{	
	//trace(myList.selectedItem.data);
	var loader:Loader = new Loader()
	loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadImage)
	loader.load(new URLRequest(myList.selectedItem.data));
}
function loadImage(e:Event):void
{
	//var img:Bitmap = new Bitmap(
	sprt.addChild(e.target.content);
}

Bigbuddha

Legacy Member
<allow-access-from domain="*.deviantart.com"/>

Dit wil zeggen dat hij enkel vanop deviant art connecties toelaat dus geen publieke connectie. Eigenlijk laat deviantart geen externe connecties toe dus.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan