Utiliser PHP pour stocker les résultats d'une demande de publication
-
20-08-2019 - |
Question
Je travaille actuellement avec une API qui nécessite l'envoi des détails de notre collection au format xml à leur serveur via une requête de publication.
Rien de majeur là-bas, mais cela ne fonctionne pas, donc je veux exporter le xml envoyé dans un fichier txt afin que je puisse voir réellement ce qui est envoyé!
Au lieu d’afficher sur l’API, l’impression sur un document appelé cible, mais le fichier XML qui enregistre son enregistrement semble être vraiment faux. Voici mon script cible. Notez que le script de publication publie 3 éléments. Par conséquent, le fichier en cours d’écriture doit contenir les détails de chaque demande de publication, l’une après l’autre.
<?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 aussi essayé ce qui suit, mais cela vient d’enregistrer la dernière demande de publication. Un seul élément de collection a donc été enregistré dans le fichier txt au lieu des 3
.output_file = fopen('output.txt', 'w');
while (!feof($fp)) {
$payload .= fgets($fp);
}
fwrite($output_file, $payload);
fclose($fp);
fclose($output_file);
Je sais que je manque quelque chose de vraiment évident, mais je l'ai regardé toute la matinée!
La solution
Changer
$output_file = fopen('output.txt', 'w');
à
$output_file = fopen('output.txt', 'a');
Aussi, changez
$payload .= fgets($fp);
à
$payload = fgets($fp);
Autres conseils
vous devriez probablement utiliser curl à la place pour récupérer le contenu puis l'écrire via fwrite
changer
$payload .= fgets($fp);
à
$payload = fgets($fp);