2016-07-30 9 views
0

Hallo Ich versuche, eine HTTP-Anfrage von this RSS-Feed zu machen. Ich versuchte dies:Ionic2 http Anfrage. XML zu Json?

makeRequest() { this.http.get('http://www.gazetaexpress.com/rss/auto-tech/?xml=1') .subscribe(data => { this.posts = data; console.log("request funktioniert"); }, error => { console.log(JSON.stringify(error.json())); }); }

Als ich {{posts}} in der HTML-Seite verwenden Sie es zurück:

Response with status: 200 OK for URL: http://m.gazetaexpress.com/mobile/rss/auto-tech/?xml=1

Bei der Verwendung von {{Post | json}} es gibt die gesamte html-Seite zurück. Ich habe versucht, mit:

this.http.get('http://www.gazetaexpress.com/rss/ballina/?xml=1').map(res => res.json()) 

stattdessen für die erste Zeile, aber es hat einen Fehler zurückgegeben:

TypeError: error.json is not a function

Bitte helfen Sie mir: D

EDIT

ich die xml2js Bibliothek importiert und Typings und importiert in der ts-Datei:

import * as xml2js from "xml2js" 

und haben die Anfrage an:

makeRequest() { 
this.http.get('http://www.gazetaexpress.com/rss/auto-tech/?xml=1').subscribe(data => { 
    this.posts = data; 
    xml2js.parseString(this.posts, function (err, result) { 
     console.log(result); 
    }); 
}, error => { 
    console.log(JSON.stringify(error.json())); 
}); 

}

Die Konsole gibt undefined zurück ...

EDIT 2

Okay, ich das Problem Hotfix. Ich nahm einfach die Lochkette und schneide sie in Stücke mit der Knotenstruktur und mit this.posts.replace(/\\t|\\n|\\r/gi, "");, um entkommene Zeichen loszuwerden. Sicherlich muss es eine gute Bibliothek geben, die an diesem Thema arbeitet, mein Code ist ziemlich knallhart;). Ich werde diesen Code später übersehen, denn jetzt funktioniert es und das ist in Ordnung. Wenn Sie etwas bessere Ideen haben, zögern Sie nicht mir zu sagen: D

Antwort

0

Wenn Sie eine Antwort von Status 200 OK erhalten, sollten Sie in der Lage sein, die Ergebnisse anzuzeigen, wie sie auf der Website, die Sie die HTTP-Anfrage sind, bestellt werden.

Versuchen Sie, die Daten beim Abonnieren jeweils abzurufen und verwenden Sie eine asnyc-Pipe in Ihrem HTML-Code, dies sollte den Trick