Pregunta

Actualmente estoy trabajando con una API que requiere que enviemos los detalles de nuestra colección en xml a su servidor mediante una solicitud posterior.

No hay nada importante allí, pero no funciona, así que quiero enviar el xml enviado a un archivo txt para poder ver lo que se está enviando.

En lugar de publicar en la API, estoy publicando en un documento llamado target, pero el xml que muestra su grabación parece estar realmente equivocado. Aquí está mi script de destino, tenga en cuenta que el script de publicación publica 3 elementos, por lo que el archivo que se está escribiendo debe tener detalles de cada solicitud de publicación, uno tras otro.

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

También probé lo siguiente, pero esto solo grabó la última solicitud de publicación, por lo que solo se registró 1 elemento de colección en el archivo txt, en lugar de los 3

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

¡Sé que me falta algo realmente obvio, pero he estado mirando esto toda la mañana!

¿Fue útil?

Solución

Cambiar

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

a

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

Además, cambiar

$payload .= fgets($fp);

a

$payload = fgets($fp);

Otros consejos

probablemente deberías usar curl en su lugar para obtener el contenido y luego escribirlo a través de fwrite

cambio

  $payload .= fgets($fp);

a

 $payload = fgets($fp);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top