Использование PHP для хранения результатов почтового запроса
-
20-08-2019 - |
Вопрос
В настоящее время я работаю с API, который требует, чтобы мы отправляли данные нашей коллекции в формате XML на их сервер с помощью почтового запроса.
Ничего серьезного, но это не работает, поэтому я хочу вывести отправленный XML в текстовый файл, чтобы я мог посмотреть, что на самом деле отправляется !!
Вместо публикации в API я отправляю в документ под названием target, но xml, который выводит запись, кажется действительно неправильным.Вот мой целевой сценарий. Обратите внимание, что сценарий публикации публикует 3 элемента, поэтому записываемый файл должен содержать подробную информацию о каждом запросе публикации один за другим.
<?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);
?>
Я также попробовал следующее, но это просто записало последний запрос на публикацию, поэтому в текстовый файл был записан только 1 элемент коллекции, а не все 3.
output_file = fopen('output.txt', 'w');
while (!feof($fp)) {
$payload .= fgets($fp);
}
fwrite($output_file, $payload);
fclose($fp);
fclose($output_file);
Я знаю, что упускаю что-то действительно очевидное, но я смотрел на это все утро!
Решение
Изменять
$output_file = fopen('output.txt', 'w');
к
$output_file = fopen('output.txt', 'a');
Также измените
$payload .= fgets($fp);
к
$payload = fgets($fp);
Другие советы
вам, вероятно, следует вместо этого использовать Curl для получения содержимого, а затем записать его через fwrite
изменять
$payload .= fgets($fp);
к
$payload = fgets($fp);