muffinman: XML datei, welche von GET Adresse steht in Datei speichern.

Guten Tag zusammen

Ist mein aller erster Forums Eintrag, da ich selbst nicht mehr weiter weis.

Meine Aufgabe ist es eine Anzeige für meine Schule zu Programmieren, wo anzeigt, wer wann wo Unterricht hat. Ich erhalte die Infos über ein XML File, welches ich per GET für den bestimmten tag abrufen kann.

Hier ein Beispiel(funktionier nicht):
http://eventows.Musterfirma.ch/EventoExpSvcV21/dataservices.asmx/getRaumbelegungenXml?AppCode=VisualRoom&AppPassword=XXXXXXX&Datum=11/07/2008&Ort=Basel

Öffne ich jetzt die URL mit dem Browser bringt er mir die XML Datei in form:

   <RaumbelegungsdatenExport>  
    <IDAnlass>6040035</IDAnlass>  
    <GebaeudeKrz>PM</GebaeudeKrz>  
    <GebaeudeAdresse>Peter Merian-Strasse 86</GebaeudeAdresse>  
    <LektionVon>2008-11-07T07:50:00+01:00</LektionVon>  
    <LektionBis>2008-11-07T09:30:00+01:00</LektionBis>  
    <AnlassBezeichnung>Wirtschaftsmathematik 1 Klasse a</AnlassBezeichnung>  
    <Zeit>07:50 - 09:30</Zeit>  
    <Raum>PM-1.01  Klassenzimmer</Raum>  
    <Dozent/>  
    <Datum>07.11.2008</Datum>  
  </RaumbelegungsdatenExport>

Soweit so gut. Jetzt aber mein Problem:
Wie kann ich mit PHP die über GET erhaltenen Informationen in eine Datei auf meinem Webserver speichern? mit der Funktion copy() und fopen() hatte ich schon versucht da bringt er mir folgende meldung:

failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in C:\web\htdocs\VisualRoom\xmlimport\xmlconvert.php on line 26

kennt Ihr eine Möglichkeit eine XML Datei, welche über GET abgerufen wird per PHP Script auf dem Webserver zu speichern? Ich benötige die XML Datei auf dem Server um dann die Informationen, welche darin gespeichert sind in eine Mysql Datenbank zu schrieben, um dann wiederum die Informationen korrigiert auf dem Bildschirm wieder auszugeben.

Besten Dank, falls einer mir antwortet im Vornherein.
Grüsse Nicolas

  1. mit der Funktion copy() und fopen() hatte ich schon versucht da bringt er mir folgende meldung:

    failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in C:\web\htdocs\VisualRoom\xmlimport\xmlconvert.php on line 26

    Prinzipiell sollte das funktionieren, wenn die PHP-Sicherheitseinstellungen das Abrufen von HTTP-URIS mittels fopen()/file_get_contents() usw. erlauben. Das scheint bei dir auch erlaubt zu sein, sonst würdest du eine andere Fehlermeldung bekommen.
    Alternativ gibt es mächtigere PHP-Techniken wie die CURL-Extension.

    Diese Fehlermeldung weist eher darauf hin, dass auf der Seite des Servers, von dem du die URI anfragst, etwas schief gegangen ist (Fehler 500). Anscheinend kannst du die URI im Browser fehlerfrei aufrufen, aber nicht übers PHP-Script. Womöglich werden dort irgendwelche bestimmten HTTP-Header, z.B. User-Agent, erwartet. Vielleicht setzt du dich mal mit dem Datenanbieter auseinander, das Problem liegt vermutlich bei ihm.

    Mathias

    1. mit der Funktion copy() und fopen() hatte ich schon versucht da bringt er mir folgende meldung:

      failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in C:\web\htdocs\VisualRoom\xmlimport\xmlconvert.php on line 26

      Prinzipiell sollte das funktionieren, wenn die PHP-Sicherheitseinstellungen das Abrufen von HTTP-URIS mittels fopen()/file_get_contents() usw. erlauben. Das scheint bei dir auch erlaubt zu sein, sonst würdest du eine andere Fehlermeldung bekommen.
      Alternativ gibt es mächtigere PHP-Techniken wie die CURL-Extension.

      Diese Fehlermeldung weist eher darauf hin, dass auf der Seite des Servers, von dem du die URI anfragst, etwas schief gegangen ist (Fehler 500). Anscheinend kannst du die URI im Browser fehlerfrei aufrufen, aber nicht übers PHP-Script. Womöglich werden dort irgendwelche bestimmten HTTP-Header, z.B. User-Agent, erwartet. Vielleicht setzt du dich mal mit dem Datenanbieter auseinander, das Problem liegt vermutlich bei ihm.

      Mathias

      Guten Morgen ihr beiden erst einmahl danke, dass ihr mir eine Antwort geschrieben habt. ich werde Die Curl Extension begutachten. und dann einmahl schauen, ob es mit dieser funktioniert. Ich werde auch mich mit dem Server Verantwortlichen in Verbindung setzen. mahl sehen, was da raus kommt.

      Ob ich die Datei nicht direkt Parsern kann,ist eine gute frage... ich werde es mir ansehen. danke für eure Tipps ich melde mich bei Gelegenheit vielleicht wieder. grüsse aus der schweiz

  2. Moin,

    kennt Ihr eine Möglichkeit eine XML Datei, welche über GET abgerufen wird per PHP Script auf dem Webserver zu speichern? Ich benötige die XML Datei auf dem Server um dann die Informationen, welche darin gespeichert sind in eine Mysql Datenbank zu schrieben, um dann wiederum die Informationen korrigiert auf dem Bildschirm wieder auszugeben.

    Was hindert dich daran, die XML-Datei direkt zu parsen, ohne den Umweg über die Datei. PHP hat mehrere XML-Parser integriert, du kannst dir also den aussuchen, der dir am besten gefällt. Und Strings sollten eigentlich alle parsen können.

    Gruß

    Stareagle