Flex 3: ¿cómo admitir la solicitud de URL de autenticación HTTP?

Tengo un script de carga de archivos Flex que usa URLRequest para cargar archivos en un servidor. Quiero agregar soporte para la autenticación http (directorios protegidos por contraseña en el servidor), pero no sé cómo implementar esto, supongo que necesito extender la clase de alguna manera, pero sobre cómo estoy un poco perdido.

Intenté modificar lo siguiente (reemplazando HTTPService con URLRequest), pero eso no funcionó.

private function authAndSend(service:HTTPService):void{        
   var encoder:Base64Encoder = new Base64Encoder();        
   encoder.encode("someusername:somepassword");        
   service.headers = {Authorization:"Basic " + encoder.toString()};
   service.send();
}

Debo señalar que no estoy bien informado cuando se trata de ActionScript / Flex, aunque he logrado modificar un poco el script de carga.

[Editar: aquí hay una actualización de mi progreso, basada en la respuesta a continuación, aunque todavía no puedo hacer que esto funcione:

Gracias por su asistencia. Intenté implementar su código pero no tuve suerte.

El comportamiento general que estoy experimentando cuando trato con ubicaciones autenticadas HTTP es que con IE7 todo está bien, pero en Firefox cuando intento cargar un archivo en el servidor muestra un mensaje de autenticación HTTP, que incluso si se dan los detalles correctos, simplemente detiene el proceso de carga.

Creo que la razón por la que IE7 está bien se debe a la información de sesión / autenticación que comparten el navegador y el componente Flash; sin embargo, en Firefox este no es el caso y experimento el comportamiento anterior.

Aquí está mi función de carga actualizada, incorporando sus cambios:

private function pergress():void 
{
if (fileCollection.length == 0) 
  {
  var urlString:String = "upload_process.php?folder="+folderId+"&type="+uploadType+"&feid="+formElementId+"&filetotal="+fileTotal;
  if (ExternalInterface.available) 
    {
    ExternalInterface.call("uploadComplete", urlString);
    }
  }
if (fileCollection.length > 0) 
  {
  fileTotal++;
  var urlRequest:URLRequest = new URLRequest("upload_file.php?folder="+folderId+"&type="+uploadType+"&feid="+formElementId+"&obfuscate="+obfuscateHash+"&sessidpass="+sessionPass);
  urlRequest.method = URLRequestMethod.POST;
  urlRequest.data = new URLVariables("name=Bryn+Jones");
  var encoder:Base64Encoder = new Base64Encoder();
  encoder.encode("testuser:testpass");
  var credsHeader:URLRequestHeader = new URLRequestHeader("Authorization", "Basic " + encoder.toString());
  urlRequest.requestHeaders.push(credsHeader);

  file = FileReference(fileCollection.getItemAt(0));
  file.addEventListener(Event.COMPLETE, completeHandler);
  file.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPStatus);
  file.addEventListener(ProgressEvent.PROGRESS, onUploadProgress);
  file.upload(urlRequest);
  }
}

omo se indicó anteriormente, parece que estoy experimentando los mismos resultados con o sin las enmiendas a mi función.

Puedo preguntar también dónde debe ubicarse el crossdomain.xml, ya que actualmente no tengo uno y no estoy seguro de dónde colocarlo.

Respuestas a la pregunta(9)

Su respuesta a la pregunta