Ich verwende einen URLLoader, um ein paar Schlüssel/Wert-Paare an ein PHP-Skript zu senden, das sie dann in eine E-Mail umwandelt, sendet (oder nicht) und dann eine Zeichenfolge mit einer Antwort ausgibt.Warum wird mein URLLoader beim Abschluss nicht gesendet?
Zuerst funktioniert es gut. Der URLLoader posten und ich bekomme meine E-Mail eine Minute später, aber aus irgendeinem Grund bekomme ich meine Antwort nicht zurück. Tatsächlich scheint mein COMPLETE Event überhaupt nicht zu feuern. Das verwirrt mich, denn wenn ich meine E-Mail bekomme, weiß ich, dass ich alles richtig senden muss. Hier ist mein Code:
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(){}
}
Als ich Mailman.test()
nennen, ich meine E-Mail genau wie ich erwarten, und das ist, was aus verfolgt:
Connection opened PROGRESS: 45/45 Status Changed to 0
Wie kann das sein? Wenn ich die Dokumentation richtig verstehe, passiert das Open-Ereignis, wenn ich mit dem Herunterladen meiner Antwort beginne, und dies geschieht eindeutig. Wie kann ich also den http-Status 0 zurückbekommen? Irgendwelche Ideen?
Ich hatte das gleiche Problem, nachdem Sie Ihren Beitrag gefunden, vielen Dank! In der Tat ist die Verwendung von schwachen Referenzen nicht immer eine gute Praxis ^^ ... –