André Laugks: Fehler-Statusseite auslesen

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

--
Die Frau geht, die Hilti bleibt!
  1. 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";

    1. 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

      --
      Die Frau geht, die Hilti bleibt!
      1. 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

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. 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

          --
          Die Frau geht, die Hilti bleibt!