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