2014-02-17 8 views
6

Angesichts der folgenden Pseudocode:Wie erhält man den HTTP-Antworttext aus einem _XMLHttpRequestProgressEvent-Ereignis von captureError von HttpRequest.postFormData?

import "dart:html"; 

HttpRequest.postFormData(url, data).then((HttpRequest request) { 

    ... 

}).catchError((error) { 

    // How do I get the response text from here? 

}); 

Wenn der Web-Server mit einem 400 BAD REQUEST antwortet dann die catchError wird aufgerufen werden. Der Fehlerparameter ist jedoch vom Typ _XMLHttpRequestProgressEvent, der in Dart-Bibliothek anscheinend nicht vorhanden ist.

Also, wie bekomme ich den Antworttext von der 400 BAD REQUEST Antwort, die vom Webserver gesendet wurde?

Antwort

6

Es scheint, als ob das Ziel in Ihrem Fehlerobjekt tatsächlich Ihre HttpRequest ist.

Sie diesen Link hilfreich sein können: https://www.dartlang.org/docs/tutorials/forms/#handling-post-requests

Sie etwas tun könnte, wie:

import "dart:html"; 

HttpRequest.postFormData(url, data).then((HttpRequest request) { 
    request.onReadyStateChange.listen((response) => /* do sth with response */); 
}).catchError((error) { 
    print(error.target.responseText); // Current target should be you HttpRequest 
}); 
+0

Ich bin nicht sicher, ob dies richtig ist, da ich nicht einmal in die ‚dann‘ Funktion immer bin . Außerdem denke ich, dass Ihr Beispiel defekt ist, da die Anfrage in onData (_) unbekannt ist. – corgrath

+0

Ich habe dies getestet, und es scheint, als ob die meisten 2XX in Ordnung ist, und die meisten 4XX und 5XX nennt den 'catchError'. – corgrath

+0

@corgrath Es scheint als hättest du recht. Ich habe das jetzt auch getestet. Sie müssen eine Anfrage an die onData übergeben - das war ein CP fehlgeschlagen. Versuchen Sie es mit error.currentTarget.responseText – markovuksanovic