Estoy usando un URLLoader para enviar unos pocos pares clave/valor a un script php, que luego los convierte en un correo electrónico, lo envía (o no) y luego repite una cadena con una respuesta.¿Por qué mi URLLoader no envía cuando se completa?
Al principio funciona bien. Las publicaciones de URLLoader y recibo mi correo electrónico un minuto más tarde, pero por alguna razón no recibo mi respuesta. De hecho, mi evento COMPLETO no parece disparar en absoluto. Esto me confunde porque si recibo mi correo electrónico, sé que debo enviar todo correctamente. Aquí está mi código:
public class Mailman{
public static const METHOD:String = URLRequestMethod.POST;
public static const ACTION:String = "mailer.php";
public static var myLoader:URLLoader = new URLLoader();
private static function onMessageProgress(e:Event){
var L:URLLoader = e.target as URLLoader;
Output.trace("PROGRESS: "+L.bytesLoaded+"/"+L.bytesTotal);
for(var k in L){
Output.trace(" "+k+": "+L[k]);
}
}
private static function onOpen(e:Event){
Output.trace("Connection opened");
}
private static function onComplete(e:Event){
Output.trace("Complete!");
}
private static function onStatusChange(e:HTTPStatusEvent){
Output.trace("Status Changed to "+e.status);
}
private static function onMessageFail(e:Event){
PanelManager.alert("ERROR: Could not send your request. Please try again later.");
}
public static function sendMessage(recipient:String,subject:String,message:String){
var _vars:URLVariables = new URLVariables();
_vars.recipient = recipient;
_vars.subject = subject;
_vars.message = message;
var req:URLRequest = new URLRequest(ACTION);
req.data = _vars;
req.method = METHOD;
myLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
myLoader.addEventListener(ProgressEvent.PROGRESS,onMessageProgress);
myLoader.addEventListener(Event.OPEN,onOpen);
myLoader.addEventListener(Event.COMPLETE,onComplete);
myLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS,onStatusChange);
myLoader.addEventListener(IOErrorEvent.IO_ERROR,onMessageFail);
myLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,onMessageFail);
myLoader.load(req);
}
public static function test(){
sendMessage("[email protected]","test","this is a test message.");
}
function Mailman(){}
}
Cuando llamo Mailman.test()
, consigo mi dirección de correo exactamente como espero, y esto es lo traza:
Connection opened PROGRESS: 45/45 Status Changed to 0
¿Cómo puede ser esto? Si entiendo la documentación correctamente, el evento Open ocurre cuando empiezo a descargar mi respuesta, y claramente está sucediendo, entonces, ¿cómo puedo recuperar un estado http de 0? ¿Algunas ideas?
Estaba experimentando exactamente este mismo problema después de haber encontrado su publicación, ¡muchas gracias! De hecho, usar referencias débiles no siempre es una buena práctica ^^ ... –