molily: rss laden per httpRequest

Beitrag lesen

Hallo,

also irgendwie scheitere ich grad auch daran per PHP die XML Datei entgegenzunehmen und zum auslesen über den httpRequest bereitzustellen. Ich verstehs nich. Vielleicht diesmal irgendein Codierungsfehler?
http.open("POST", "load_feed.php", true);
http.setRequestHeader("Content-Type", "text/xml");

Du schickst hier kein text/xml an den Server, sondern application/x-www-form-urlencoded.

http.send("url=http://www.zdf.de/ZDFmediathek/rss/4/0,4149,2351716,00.xml");
http.onreadystatechange = post_news;

Wieso eigentlich ein POST-Request? Du willst nicht Daten zum Server senden (naja), sondern Daten abfragen anhand des Parameters url.
Gut, dafür nimmst du einen einfachen GET-Request mit dem Query-String ?url=...

Und die load_feed.php:
$fp = join ('', file($_POST['url']));
echo $fp;

Ein PHP-Script sendet standardmäßig den Header Content-Type: text/html.

Du holst aber eine RSS-Datei von einem fremden Server und gibst sie dann im PHP-Script aus und damit an den Browser weiter.

Der sollte das RSS aber nicht als text/html bekommen, sondern z.B. als application/xml. Mit header() kannst du PHP dazu bringen, den entsprechenden Header Content-Type: application/xml zu senden.

Die Kodierungsfrage ist eine ganz andere.
Wenn du eine Ressource von einem anderen Server mittels file() einliest, dann weißt du nicht, welche Kodierung der ZDF-Server mit seiner Antwort gesendet hat. Du bist also darauf angewiesen, dass in der RSS-Datei eine Kodierungsangabe in Form einer XML-Deklaration drinsteht. Das ist beim ZDF-Feed der Fall, also wird der Browser damit klarkommen, aber andere Feeds enthalten gerne keine oder auch falsche Kodierungsangaben.

Mathias