XML-Push

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • XML-Push

    Hallo Leute! Ich stehe vor einem Problem und bräuchte mal einen Tipp.

    Für eine Homepage möchte ich aus einer Datenbank (cb.heimat.de) Termine auslesen. Die Datenbank ist so angelegt, dass man durch den Aufruf von zum Beispiel "http://cb.heimat.de/interface/api/location.php?city=2384" sämtliche Veranstaltungen aus Aachen als XML-String erhält.

    Ich habe schon mal mit XML zu tun gehabt, und damals benutzte ich die XML-Klasse xmltophp um an den String heranzukommen. Und zwar wurde die php-Datei von Flash aufgerufen, wobei XML-Daten an die PHP-Datei mit der XML-Klasse übergeben wurden. In dieser PHP-Datei konnte ich dann so auf den XML-String zugreifen:
    PHP-Code:
    $XML = new xmltophp();
    $elements $XML->par************MLintoarray($HTTP_RAW_POST_DATA);
    $uebung $elements['EAT']['INFOS']['UEBUNG_ID'];
    $action $elements['EAT']['INFOS']['REQUEST'];
    $userid $elements['EAT']['INFOS']['USER_ID']; 
    Nun hab ich mal versucht, den zurückgegebenen XML-String so abzufangen:

    PHP-Code:
    $XML = new xmltophp();
    $elements $XML->par************MLintoarray("http://cb.heimat.de/interface/api/location.php?id=3493"); 
    Was nicht funktioniert hat. In der Klasse wird die Funktion
    PHP-Code:
    xml_parse_into_struct($parser$response$vals); 
    angewendet, wobei $response der String mit der URL ist.
    Normalerweise muss ich doch die URL "http://cb.heimat.de/interface/api/location.php?id=3493" irgendwie pushen, den Rückgabewert einfangen und in einer Variable ablegen. Erst dann kann ich wahrscheinlich auf den XML-String zugreifen, oder?

    Aber wie bewerkstellige ich den nun diesen PHP-Push? Oder bin ich aufm Holzweg?

    Würde mich über Tipps freuen.

    MfG

    Alex

  • #2
    Push? Ich würde das Pull nennen.

    PHP-Code:
    $xmlfile file_get_contents('http://cb.heimat.de/interface/api/location.php?id=3493');

    $XML = new xmltophp();
    $elements $XML->par************MLintoarray($xmlfile); 

    Kommentar


    • #3
      probier mal das:
      PHP-Code:
      ob_start();
      $elements $XML->par************MLintoarray("http://cb.heimat.de/interface/api/location.php?id=3493");
      $str_return ob_get_contents();
      ob_end_clean(); 
      so konnte ich mir Google-Koordinaten holen
      it's not a bug,
      it's a feature!

      Kommentar


      • #4
        Also leider funzen beide Möglichkeiten nicht auf Anhieb.


        Bei dieser Variante
        PHP-Code:
        $xmlfile file_get_contents('http://cb.heimat.de/interface/api/location.php?id=3493'); 
        kommt die Klasse nicht klar, es kommt eine Fehlermeldung, die sich auf die Zeilen innerhalb der Klasse bezieht:

        Warning: %v%v() [function.%v]: The first argument should be an array in /srv/www/vhosts/artists.de/httpdocs/termine_connect.php on line 40

        Warning: Invalid argument supplied for foreach() in /srv/www/vhosts/artists.de/httpdocs/termine_connect.php on line 41
        Array

        Die betroffene Funktion:


        PHP-Code:
        function correctentries($dataarray){
              if(
        is_array($dataarray)){
                
        $keys =  array_keys($dataarray);
                if (
        count($keys)== AND is_int($keys[0])){
                  
        $tmp $dataarray[0];
                  unset(
        $dataarray[0]);
                  
        $dataarray $tmp;
                }
                
        $keys2 array_keys($dataarray);
                foreach(
        $keys2 as $key){
                  
        $tmp2 $dataarray[$key];
                  unset(
        $dataarray[$key]);
                  
        $dataarray[$key] = $this->correctentries($tmp2);
                  unset(
        $tmp2);
                }
              }
              return 
        $dataarray;
            } 
        Die Zeile 40 fängt mit $keys2 an. Ich kann mit diesem Fehler leider nichts anfangen.


        Die Zweite Variante gibt einen Fatal Error:
        Fatal error: Call to a member function par************MLintoarray() on a non-object in /srv/www/vhosts/artists.de/httpdocs/termine_connect.php on line 52

        Ich hab mal in der Zwischenzeit recherschiert...handelt es sich hierbei um einen HTTP-Request oder Server-Request?

        Kommentar


        • #5
          Re: XML-Push

          Lass dir $xmlfile mal ausgeben.

          Kommentar


          • #6
            bleibt leider leer....

            PHP-Code:
            $xmlfile file_get_contents('http://cb.heimat.de/interface/api/location.php?id=3493');

            /*$XML = new xmltophp();
            $elements = $XML->par************MLintoarray($xmlfile);*/
            echo $xmlfile

            Kommentar


            • #7
              Besteht das Problem nicht eher dadrin, dass die hier vorgeschlagenen Lösungen die php-Datei selbst einzulesen versuchen anstatt deren Ausgabe??

              Kommentar


              • #8
                (Warum nimmst du nicht simpleXML?)
                [FONT="Helvetica"]twitter.com/unset[/FONT]

                Shitstorm Podcast – Wöchentliches Auskotzen

                Kommentar


                • #9
                  Genau das hab ich eben gemacht.
                  Aber Problem besteht weiterhin. Wenn ich die URL im Browser aufrufe, die XML-Ausgabe in eine XML-Datei abspeichere und diese Datei bei mir auf dem Server ablege, dann kann ich die Daten auslesen.

                  Aber ich möchte das die URL innerhalb meiner PHP aufgerufen wird, damit der ausgegebene String automatisch übernommen wird. So muss ich nicht selbst zwischenspeichern.

                  Kommentar


                  • #10
                    Überprüfe mal, ob du generell mit file_get_contents Daten über http holen kannst. Ansonsten kannst du auch cURL nutzen oder deine PHP-Installation entsprechend anpassen, wenn du die Möglichkeit hast.
                    [FONT="Helvetica"]twitter.com/unset[/FONT]

                    Shitstorm Podcast – Wöchentliches Auskotzen

                    Kommentar


                    • #11
                      Ich habe schon ein paar Stunden diesem Thema erfolglos gewidmet daher nehme ich einfach die Lösung an, die jetzt funktioniert. Den vom Browser zurückgegebenen XML-String bei mir als XML-Datei abspeichern und per
                      PHP-Code:
                      simplexml_load_file('test.xml'); 
                      öffnen.

                      file_get_contents liefert nichts.

                      Kommentar


                      • #12
                        Könnte es sein, dass in deiner php.ini allow_url_fopen auf 0 steht?
                        [FONT="Helvetica"]twitter.com/unset[/FONT]

                        Shitstorm Podcast – Wöchentliches Auskotzen

                        Kommentar


                        • #13
                          wenn dem so ist hast du schlechte karten
                          it's not a bug,
                          it's a feature!

                          Kommentar


                          • #14
                            Original geschrieben von unset
                            Könnte es sein, dass in deiner php.ini allow_url_fopen auf 0 steht?
                            Auf dem Abfrageserver oder auf dem Antwortserver? Ich weiß nicht wie der Antwortserver eingestellt ist, aber wenn die Datei genau dafür gedacht ist...

                            Auf meinem Server steht sie jedenfalls auf "on"

                            Kommentar


                            • #15
                              Und du kannst KEINE Seite mit file_get_contents() einlesen? Versuch mal www.example.com
                              [FONT="Helvetica"]twitter.com/unset[/FONT]

                              Shitstorm Podcast – Wöchentliches Auskotzen

                              Kommentar

                              Lädt...
                              X