Rolf B: Danke. Neues Problem: Download

Beitrag lesen

Hallo hmm,

d.h. der eigentliche Download vom Server gelingt und du bekommt einen XML String geliefert. Den gibst Du ja aus.

Mit dem GZIP bin ich nicht sicher, ob ich das richtig verstehe. Du schreibst immer "GZIP und XML", das klingt nach XML als Content-Type und GZIP als Content-Encoding. Das siehst du aber im Netzwerktab des Browsers, wenn Du Dir die Response des Servers auf deine Anfrage anschaust.

Jedenfalls musst Du beim Senden des GET Requests an den Server keinen Content-Type setzen. Du sendest ja keinen Content. Das tut nur der Server, deshalb muss der den Content-Type setzen. Der Client kann einen Accept-Header setzen, mit dem er dem Server die MIME-Typen schickt, die der Client versteht. Der Default dürfte / oder so sein. Guck ins Netzwerk-Tab, da siehst Du was der Browser schickt.

Das Content-Encoding musst Du eigentlich nicht beachten, das ist eine Sache der Transportschicht und sollte vom Brauser transparent behandelt werden. Beim Erzeugen der ObjectURL spielt das Content-Encoding, das der Server benutzte, keine Rolle mehr. Das siehst Du daran, dass deine Response ein XML String ist.

Oder - ist es das? Oder ist das ein Response-Objekt, das eine toString() Methode besitzt die den Content ausgibt? Das müsstest Du herausfinden. Entweder mit dem Debugger, oder durch Nachlesen im Angular Handbuch. Wenn Du ein Response-Objekt bekommst, dass sich lediglich für console.log() in einen String mit dem Content verwandelt, könnte das den Parse-Error erklären.

Update: Ich sehe gerade, dass Du createObjectUrl verwendest. Erstaunlich, dass das überhaupt klappt, weil eine ObjectURL an das Dokument gebunden ist in dem sie erzeugt wurde. Aber in einem Fiddle hat das funktioniert. Es ist dann nur so, dass diese ObjectURL Chrome dazu bringt, einen XML Pretty Printer anzuwerfen, der die XML-Declaration Zeile unterschlägt. Was der Fuchs tut weiß ich nicht. Wenn das das ist, was Du willst, prima. Wenn Du die XML Datei „nackig“ anzeigen willst, dann setze für den Blob den Typ "text/plain".

Ich habe das mit einem Mini-XML Dokument probiert, das in einem String steht, und bekomme keinen Parse-Error. Ist dein XML Dokument nicht in Ordnung? Chrome sagt mir genau, wo der Parse-Error ist. Guck Dir das erhaltene XML an der Stelle mal an.

Rolf

--
sumpsi - posui - obstruxi