Utilizando PHP para armazenar resultados de uma solicitação post
-
20-08-2019 - |
Pergunta
Im atualmente trabalhando com uma API que requer enviamos nossos detalhes de coleta em XML para o seu servidor usando uma solicitação post.
Nada importante lá, mas não o seu trabalho, então eu quero a saída xml enviado para um arquivo txt para que eu possa olhar para o que está realmente sendo enviado !!
Em vez de postagem para o API im postagem para um alvo documento chamado, mas o xml sua saída sua gravação parece ser realmente errado. Aqui está o meu script de destino, nota que a postagem mensagens de script 3 itens, de modo que o arquivo que está sendo escrito deve ter detalhes de cada uma solicitação post após o outro.
<?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);
?>
Eu também tentei o seguinte, mas este acabou de gravar o último pedido post para apenas 1 item de coleção foi gravada no arquivo txt, em vez de todos os 3
output_file = fopen('output.txt', 'w');
while (!feof($fp)) {
$payload .= fgets($fp);
}
fwrite($output_file, $payload);
fclose($fp);
fclose($output_file);
Eu sei im faltando algo realmente óbvio, mas ive sido olhando para este durante toda a manhã!
Solução
Mudança
$output_file = fopen('output.txt', 'w');
para
$output_file = fopen('output.txt', 'a');
Além disso, a mudança
$payload .= fgets($fp);
para
$payload = fgets($fp);
Outras dicas
Você provavelmente deve usar onda em vez de buscar o conteúdo e, em seguida, escrevê-lo via fwrite
mudança
$payload .= fgets($fp);
para
$payload = fgets($fp);