Używam URLLoader do wysłania kilku par klucz/wartość do skryptu php, który następnie zamienia je w e-mail, wysyła je (lub nie), a następnie echo ciąg znaków z odpowiedzią.Dlaczego mój URLLoader nie wysyła wiadomości po zakończeniu?
Na początku działa dobrze. URLLoader wysyła posty, a ja dostaję e-mail minutę później, ale z jakiegoś powodu nie otrzymuję odpowiedzi. W rzeczywistości moje wydarzenie COMPLETE w ogóle nie działa. To mnie myli, ponieważ jeśli otrzymuję wiadomość e-mail, wiem, że muszę wysyłać wszystko poprawnie. Oto mój kod:
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(){}
}
Kiedy zadzwonić Mailman.test()
, dostanę wiadomość dokładnie tak, jak ja się spodziewać, i to, co śledzi się:
Connection opened PROGRESS: 45/45 Status Changed to 0
Jak to może być? Jeśli poprawnie zrozumiem dokumentację, wydarzenie Open dzieje się, gdy zaczynam pobierać moją odpowiedź, i wyraźnie to się dzieje, więc jak mogę odzyskać stan http 0? Jakieś pomysły?
Po znalezieniu Twojego adresu wystąpił dokładnie ten sam problem, wielkie dzięki! W rzeczywistości używanie słabych referencji nie zawsze jest dobrym pomysłem ^^ ... –