2017-07-21 2 views
0

Ich habe Probleme mit der Anforderung des Typs ResponseContentType.Blob und erhalte eine Fehlermeldung im Falle eines fehlgeschlagenen Anrufs.Greifen Sie auf Fehlerantwortdaten zu, wenn ResponseContentType.Blob verwendet wird

Der Code ist ziemlich einfach:

let headers = new Headers({'Content-Type': 'application/json'}); 
let options = new RequestOptions({headers: headers, responseType: ResponseContentType.Blob}); 

return this.http.post('url', data, options) 
     .subscribe(res => ..., err => console.log(err.json()) /* the problem is here */); 

So JSON als Server-Antwort im Fehlerfall vollständig klären haben, aber ich kann nicht darauf zugreifen: err.json() kehrt Blob {size: 194, type: "application/json"} nur Daten.

Zugriff auf Antwortdaten? Ich kann zu etw sonst nicht ändern, wie ich Datei im Falle der Erfolganforderung erwarte.

Antwort

-1

Sie können nur .blob() Methode verwenden:

err.blob() 

Die Body Klasse, die von Response Klasse implementiert wird, hat folgende reponse Inhalt Accessoren:

export abstract class Body { 
    json(): any 
    text(encodingHint: 'legacy'|'iso-8859' = 'legacy'): string 
    arrayBuffer(): ArrayBuffer 
    blob(): Blob 
+0

beide err.json() und err.blob() gibt in diesem Fall das gleiche Ergebnis zurück – VadimB

+0

warum der Anruf fehlgeschlagen ist? show screenshot des Antwortinhalts von der Konsole –

+0

Der Aufruf ist wegen einiger Validierungslogik fehlgeschlagen, zum Beispiel indem versucht wird, eine Datei an eine bereits gelöschte Anfrage anzuhängen (von einem anderen Benutzer als Beispiel). Es viele Validierungslogik sind, so Auslösung wieder Fehler sind in Ordnung – VadimB

0

Sie den Blob zurück konvertieren in Text mit a FileReader. Dann können Sie den Text mit JSON.parse() wieder in json konvertieren.

Verwandte Themen