Using Base64Encoder for Basic authentication in Flex/AIR

I've been trying to perform Basic HTTP Authentication using Flex/Air yesterday and couldn't figure out what was wrong - until I RTFM'd and found out that .encode only encodes and returns void. One needs to .flush() to get the encoded data back.

 
private function loadSomething():void
{
	var strUserName:String = 'foo';
	var strPassword:String = 'bar';
 
	var myLoader:URLLoader = new URLLoader();
	var myRequest:URLRequest = new URLRequest();
	var authEncoder:Base64Encoder = new Base64Encoder();
 
	var authHeader:URLRequestHeader = new URLRequestHeader();
	authHeader.name = 'Authorization';
	authEncoder.encode(strUserName + ':' + strPassword);
	authHeader.value = 'Basic ' + authEncoder.flush();
 
	myRequest.requestHeaders.push (authHeader);
	myRequest.url = "http://yourown.domain/your/url";
	myRequest.method = URLRequestMethod.GET;
 
	myLoader.addEventListener(Event.COMPLETE, urlLoaded);
	myLoader.load(myRequest);	
 
}
 
function urlLoaded(e:Event) {}
 


Leave a Reply