2009-06-26 6 views
2

Ich arbeite derzeit mit einer API, die erfordert, dass wir unsere Sammlungsdetails in XML mit einer Postanforderung an ihren Server senden.Verwendung von PHP zum Speichern der Ergebnisse einer Postanforderung

Nichts großes dort, aber es funktioniert nicht, also möchte ich das gesendete xml zu einer txt Datei ausgeben, also kann ich schauen, was tatsächlich gesendet wird !!

Anstatt auf die API im Posting zu einem Dokument namens Ziel zu veröffentlichen, aber die XML-Ausgabe seiner Aufnahme scheint wirklich falsch zu sein. Hier ist mein Ziel-Skript, beachten Sie, dass das Posting-Skript 3 Elemente postet, so dass die Datei, die geschrieben wird, Details jeder Post-Anfrage nacheinander haben sollte.

<?php 

error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// get the request data... 
$payload = ''; 
$fp = fopen('php://input','r'); 
$output_file = fopen('output.txt', 'w'); 
while (!feof($fp)) { 
    $payload .= fgets($fp); 
    fwrite($output_file, $payload); 
} 

fclose($fp); 
fclose($output_file); 
?> 

Ich habe versucht, auch die folgenden, aber das ist nur die letzte Post Anfrage nur 1 Auflistelement aufgezeichnet wurde in der txt-Datei aufgezeichnet, statt alle 3

output_file = fopen('output.txt', 'w'); 
while (!feof($fp)) { 
    $payload .= fgets($fp); 
} 
fwrite($output_file, $payload); 
fclose($fp); 
fclose($output_file); 

ich weiß, im etwas wirklich fehlt offensichtlich, aber ich habe mir den ganzen Morgen angesehen!

+0

Sollten Sie nicht fopen ('output.txt', 'a') verwenden; -> Flagge anhängen, Flagge nicht schreiben. Andernfalls überschreiben Sie die Datei. Nein? – jitter

+0

Ja das ist das Problem, sagte dir, ich könnte es nicht für die Bäume sehen !! Es war ein langer Morgen. Post es als Antwort und Sie haben Ihre richtige Antwort Tick :) –

Antwort

0

ändern

$output_file = fopen('output.txt', 'w'); 

zu

$output_file = fopen('output.txt', 'a'); 

Auch ändern

$payload .= fgets($fp); 

zu

$payload = fgets($fp); 
+0

oder setzen Sie fwrite ($ output_file, $ Nutzlast); direkt nach der while-Schleife, nicht drinnen. – Alex

0

sollten Sie wahrscheinlich curl verwenden, anstatt den Inhalt zu holen und sie dann über Fwrite schreiben

0

Änderung

$payload .= fgets($fp); 

zu

$payload = fgets($fp);