【问题标题】:Using PHP to store results of a post request使用 PHP 存储 post 请求的结果
【发布时间】:2009-06-26 09:24:43
【问题描述】:

我目前正在使用一个 API,该 API 要求我们使用 post 请求将我们的集合详细信息以 xml 格式发送到他们的服务器。

没什么大不了的,但它不起作用,所以我想将发送的 xml 输出到 txt 文件,这样我就可以查看实际发送的内容!

而不是发布到 API 即时发布到名为目标的文档,但输出其记录的 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);
?> 

我也尝试了以下方法,但这只是记录了最后一次发布请求,因此 txt 文件中只记录了 1 个收集项,而不是全部 3 个

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

我知道我错过了一些非常明显的东西,但我整个上午都在看这个!

【问题讨论】:

  • 你不应该使用 fopen('output.txt', 'a'); -> 附加标志而不是写标志。否则你覆盖文件。没有?
  • 是的,这就是问题所在,告诉你我看不到树!!这是一个漫长的早晨。将其发布为答案,您就得到了正确的答案:)

标签: php http-post file-writing


【解决方案1】:

改变

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

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

还有,改变

$payload .= fgets($fp);

$payload = fgets($fp);

【讨论】:

  • 或者把 fwrite($output_file, $payload);就在 while 循环之后,而不是在里面。
【解决方案2】:

您可能应该使用 curl 来获取内容,然后通过 fwrite 写入它

【讨论】:

    【解决方案3】:

    改变

      $payload .= fgets($fp);
    

     $payload = fgets($fp);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-26
      • 1970-01-01
      相关资源
      最近更新 更多