PHP und cXML

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

  • PHP und cXML

    Hallo!

    Ich bekomme aus einem Ariba-System cXML-Daten an ein PHP-Skript (=SetupRequestHandler) gepostet, das diese XML-Daten verarbeiten soll. In der cXML-Doku steht, dass das XML per HTTP-Post geschickt wird, aber nicht wie (POST_VAR, Header, Body??).

    Ich logge die Request-Header und HTTP_POST_VARS mit, allerdings steht dort kein cXML drin, d.h. ich habe das Problem, dass ich nicht weiß, wie ich mit PHP auf die XML-Daten zugreifen kann!?

    Deshalb habe ich mal versucht per Telnet einfach einen Datenstrom an das PHP-Skript zu posten:

    POST /path/SetupRequestHandler.php HTTP/1.1
    Host: myhost.de
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 10

    Hallo Welt

    Allerdings weiß ich nicht, wie ich mit PHP jetzt auf den Body zugreifen kann!? In $GLOBALS steht kein "Hallo Welt". Geht sowas überhaupt ohne Bezeichner!?

    Es ist ja recht gängig XML-Daten per POST zwischen Servern hin und her zu schicken, hier ein Beispiel von php.net:

    <?php
    $XPost = "<XMLcontent>sameas above</XMLcontent>"
    $url = "..same URL as above..";
    $ch = curl_init(); // initialize curl handle
    curl_setopt($ch, CURLOPT_URL,$url); // set url to post to
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
    curl_setopt($ch, CURLOPT_TIMEOUT, 4); // times out after 4s
    curl_setopt($ch, CURLOPT_POSTFIELDS, $XPost); // add POST fields
    $result = curl_exec($ch); // run the whole process
    echo $result; //contains response from server
    ?>

    Auf den XMLContent kann ich aber auch nur dann zugreifen, wenn ich $XPost als Array definiere, weil die Daten dann in einer POST_VAR stehen.

    Danke für eure Hilfe!!
    Patrick

  • #2
    Ich hab die Lösung, eigentlich ganz einfach ;-)

    In der php.ini muss der Parameter always_populate_raw_post_data auf on gesetzt sein, dann ist die Umgebungsvariable $HTTP_RAW_POST_DATA gefüllt mit dem ursprünglichen HTTP-Datenstrom.

    Kommentar


    • #3
      SAP Idoc Orders

      ... ich hatte das gleiche Problem nur mit einem SAP Businessconnector. Hatte ewig gesucht, dabei ist die Lösung doch so einfach.

      Testen kann man das auch ganz einfach..

      curl -k -d "xmlblabla" https://host/datei.php

      Dank und Gruß
      Oliver

      Kommentar

      Lädt...
      X