Flash Lite en basic HTTP auth
Published by Ronny on September 21st, 2008 in Actionscript, Flash, Tutorial. No Comments »Ik ben de laatste dagen erg druk bezig geweest met een (erg cool) Flash Lite project (waar ik binnenkort eindelijk over zal schrijven). Hoewel deze post over mijn ervaring in Flash Lite gaat is het in Actionscript 2 voor Flash Player ook van toepassing. Voor Actionscript 3 zal de werkwijze vrijwel analoog zijn.
Tijdens het ontwikkelen van de applicatie ben ik op het probleem gestoten dat ik data moest inladen die gebruikersspecifiek waren. Daarenboven zat er ook gevoelige data bij, die dus beveiligd moest verstuurd worden.
Mijn collega (die de server-side van het project ontwikkelt) stelde een aantal mogelijkheden voor waaronder basic HTTP authentication. Dit leek me een goede manier om het te proberen. Jammer genoeg bleven mijn zoektochten op Google naar duidelijke uitleg onbeantwoord. Door het samenrapen van een 3 tutorials en bronbestanden had ik het eindelijk door.
In feite is basic HTTP auth in Flash (Lite) echt doodsimpel. (Ik versta niet waarom iedereen daar altijd zo’n rond-de-pot-gedraai aan toevoegd.)
To the point: Stel ik wil XML inladen (mbv Actionscript 2). Dat doen we over het algemeen zo:
var xml:XML = new XML();
xml.ignoreWhite = true;
xml.onLoad = xmlComplete;
xml.load('http://example.com/somepage.php');
function xmlComplete(success){
if(success){
//logica komt hier
}
}
Heel basic, zonder authentication. Niets nieuws, dus. Maar wat als somepage.php je om een gebruikersnaam en wachtwoord vraagt?

Dit kan blijkbaar heel makkelijk opgelost worden, door gebruik te maken van de addRequestHeaders method (die zowel voor de XML class, de webservice class, alsook voor LoadVars class beschikbaar is), en de Base64 class (download hier).
Je code ziet er dan als volgt uit.
var auth:String = Base64.Encode("myUsername:myPassword");
var xml:XML = new XML();
xml.ignoreWhite = true;
xml.onLoad = xmlComplete;
xml.addRequestHeader("Authorization","Basic "+auth);
xml.sendAndLoad('http://example.com/somepage.php',xml);
function xmlComplete(success) {
if(success){
//logica komt hier
}
}
Er zijn 2 grote verschillen. In dit voorbeeld gebruiken we de addRequestHeaders method om de gebruikernaam en het wachtwoord aan de requestHeaders van het XML object toe te voegen. Deze moeten wel eerst via Base64 geëncode worden alvorens dat de basic HTTP auth deze ontvangt. Daarnaast gebruiken we ook de sendAndLoad method zodat de headers meegestuurd worden naar de server.
Het is dus op zich erg simpel, maar je zou bijna niet geloven hoeveel tijd ik gespendeerd heb om tot deze conclusie te komen. Ik kan het nog altijd niet geloven als ik naar de simpelheid ervan kijk.
Hopelijk kan ik enkelen hiermee wat tijd besparen.
Posts that somehow relate to this one:
- Flash on the beach mobile – (727 views)
- Preloader in Actionscript 3 – (2146 views)
- Playr: De ActionScript 3 music player class! – (6763 views)
- FITC Toronto Mobile Guide – (691 views)
- Nabaztag/tag – (1527 views)
Freedom of speech!
Whatever it is you feel: Tell me! It's for free!


