Fehler-Statusseite auslesen
André Laugks
- php
0 dedlfix
0 André Laugks0 wahsaga
Hallo!
Ich lese per file_get_contents() eine Datei auf einem entfernten Server aus.
$content = file_get_contents('http://www.example.com/item/text/12345.xml');
Problem ist, wenn die Datei nicht existiert, bekomme ich ein 404 zurück und file_get_contents() generiert eine Fehlermeldung.
Der server liefert aber eine Fehler-Statusseite, in Form einer XML-Datei.
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>404</code>
<description>could not retrieve data. please check request.</description>
</error>
Wie komme ich an diese Fehler-Statusseite?
André Laugks
echo $begrüßung;
Ich lese per file_get_contents() eine Datei auf einem entfernten Server aus.
Der server liefert aber eine Fehler-Statusseite, in Form einer XML-Datei.
Wie komme ich an diese Fehler-Statusseite?
file_get_contents() verwendet einen Wrapper, um auf HTTP-Ressourcen zuzugreifen. Ich nehme an, dass die Antwort auf der Seite zum HTTP-Wrapper zu finden ist und das Stichwort dazu "Context" lautet.
echo "$verabschiedung $name";
Hallo!
file_get_contents() verwendet einen Wrapper, um auf HTTP-Ressourcen zuzugreifen. Ich nehme an, dass die Antwort auf der Seite zum HTTP-Wrapper zu finden ist und das Stichwort dazu "Context" lautet.
Nee, dass funktioniert nicht wirklich!
Warning: file_get_contents(http://www.example.com/item/text/12345.xml) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /www/htdocs/foo/bar.php on line 17
André Laugks
hi,
Nee, dass funktioniert nicht wirklich!
Warning: file_get_contents(http://www.example.com/item/text/12345.xml) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /www/htdocs/foo/bar.php on line 17
Diese Meldung ließe sich ja durch ein @ vorm file_get_contents unterdrücken.
Auf der von dedlfix verlinkten Seite steht was von
"The stream allows access to the body of the resource; the headers are stored in the $http_response_header variable. Since PHP 4.3.0, the headers are available using stream_get_meta_data()."
Wenn file_get_contents sich in so einem Falle aber wirklich nicht überreden lassen mag, den Inhalt zu liefern [1] - dann bliebe noch fsockopen/fgets als Workaround.
[1] Ich finde es nachvollziehbar. Du willst den Inhalt einer Ressource holen, diese gibt es aber gar nicht. Dass du mit dem stattdessen zur Fehlermeldung ausgelieferten Message-Body noch was anfangen willst, dürfte ein ziemlicher Sonderfall sein.
gruß,
wahsaga
Hallo!
[1] Ich finde es nachvollziehbar. Du willst den Inhalt einer Ressource holen, diese gibt es aber gar nicht. Dass du mit dem stattdessen zur Fehlermeldung ausgelieferten Message-Body noch was anfangen willst, dürfte ein ziemlicher Sonderfall sein.
Wenn man über REST ~ 500.000 Dateien einmal die Woche überprüfen muß, ist ein Statusfehler sehr hilfreich.
André Laugks