2009-06-26 5 views
2

Je travaille actuellement avec une API qui nécessite que nous envoyions les détails de notre collection en XML à leur serveur en utilisant une demande de publication.Utiliser PHP pour stocker les résultats d'une demande de publication

Rien de majeur là-bas, mais il ne fonctionne pas, donc je veux sortir le fichier XML envoyé dans un fichier txt afin que je puisse regarder réellement ce qui est envoyé !! Au lieu de publier sur l'API, il est envoyé à un document appelé target, mais le xml qui produit son enregistrement semble être vraiment faux. Voici mon script cible, notez que le script de publication publie 3 éléments, de sorte que le fichier en cours d'écriture doit avoir les détails de chaque demande de publication les uns après les autres.

<?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); 
?> 

J'ai essayé également les éléments suivants, mais cela vient d'enregistrer la dernière demande de poste si seulement 1 élément de collection a été enregistrée dans le fichier txt, au lieu de tous les 3

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

Je sais im manque quelque chose de vraiment évident, mais j'ai regardé cela toute la matinée!

+0

Vous ne devriez pas utiliser fopen ('sortie.txt', 'a'); -> append flag pas d'écriture. Sinon, vous remplacez le fichier. non? – jitter

+0

Oui c'est le problème, je vous ai dit que je ne pouvais pas le voir pour les arbres !! C'était une longue matinée. Postez-le comme une réponse et vous avez votre réponse correcte cochez :) –

Répondre

0

changement

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

à

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

Aussi, changer

$payload .= fgets($fp); 

à

$payload = fgets($fp); 
+0

ou mettez fwrite ($ output_file, $ payload); juste après la boucle while, pas à l'intérieur. – Alex

0

vous devriez probablement utiliser boucle à la place pour récupérer le contenu puis écrire via fwrite

0

changement

$payload .= fgets($fp); 

à

$payload = fgets($fp); 
Questions connexes