Hi, ich habe folgende Gegebenheit, die mir Probleme bereitet. Vielleicht kann mir jemand den richtigen Hinweis geben, ich probiere schon seit Stunden.
Es müssen XML-Daten via POST an ein PHP-Skript gesendet werden, eigentlich eine simple Angelegenheit. Zum Testen der Daten (inhaltlich) stellt der Anbieter ein HTML-Formular bereit, in dessen Textfeld man die XML-Daten einträgt. Ich poste hier mal das FORM
<form enctype="multipart/form-data" method="post" action="../path/to/some/phpfile.php">
<textarea name="testField" id="testField">
</textarea>
<input name="ace" id="ace" type="submit" value="Send Form">
</form>
Man kann also in dieses Formular XML-Daten eingeben, absenden und sich das Ergebnis ansehen. Ist das XML fehlerhaft, wirft der Server eine entsprechende Meldung raus, ist es richtig, wird das mit einer Erfolgsmeldung quittiert. Das auf dem Server befindliche Skript funktioniert also fehlerfrei.
Nun muss ich allerdings die Daten nicht mit diesem Formular versenden, sondern mit PHP. Zuerst einmal irritiert mich dieses "multipart/form-data". Alle meine Versuche, mit CURL schlugen bisher fehl. Der Server meldet stets, kein XML erhalten zu haben ("No XML DATA FOUND").
Beispiel Curl:
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('testField' => $xml));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_ENCODING, "multipart/form-data");
$result=curl_exec($ch);
curl_close($ch);
print_r($result);
Das ist nur einer von unzähligen Versuchen, ich habe es mit file_get_contents (und entsprchendem Kontext) und Curl versucht. Ich habe sogar schon den Header exakt so aus HTTP-LiveHeaders rauskopiert, wie das Formular gesendet hat und dem Streamkontext übergeben. An einer korrupten XML-Struktur kann es auch nicht liegen, da dieser Fehler über das Formular entsprechend ausgewertet wird ("WRONG XML STRUCTURE").
Nur um Fragen vorzubeugen, $xml ist nicht leer, sondern ein String:
$xml = "<?xml version=\"1.0\" standalone=\"yes\"?><doc><id>434</id><test>yes</test></doc>";
Wie gesagt irritiert mich auch dieses multipart/form-data im Formular, ich lade ja keine Dateien hoch... was soll das?
Help? Anyone?