【发布时间】:2016-03-20 18:22:36
【问题描述】:
我一直在尝试通过 Shopify 管理部分设置 Shopify webhook (documentation here)。到目前为止,我无法使用多种方法获取测试 webhook 中发送的任何数据,但我知道它正在发送,因为我创建了一个 Requestbin 并且已经看到数据通过了。
我在 Stackoverflow 上找到了这段代码。
header('Access-Control-Allow-Origin: *');
$postdata = file_get_contents("php://input");
$file = "log.txt";
$current = file_get_contents($file);
$current .= $postdata;
file_put_contents($file, $current);
echo $current;
到目前为止,它是我能够用来实际查看任何 JSON 的唯一代码。但我不想每次触发 webhook 时都将 JSON 写入“log.txt”文件。但是,一旦我尝试以任何方式删除或调整代码,我就再也看不到任何 JSON。看来我必须将$postdata 写入文件,然后检索内容以获取数组。
是否可以访问 JSON 而无需先将其写入另一个文件?
【问题讨论】:
-
$data = json_decode(file_get_contents('php://input'));应该是接收 JSON 所需的全部内容。var_dump($data);在这种情况下是否显示不正确的信息? -
var_dump($data);仅在我使用$data = json_decode(file_get_contents('php://input'));时返回NULL -
删除 json_decode 后会得到什么?任何来自 php://input 的东西?我想知道是否有些请求不包含任何数据,或者它是以其他格式通过的。
-
如果我只删除 json_decode 和 var_dump 文件_get_contents,我最终会得到
string(0) "" -
对于调试,请尝试
file_put_contents('./request.txt', print_r($_SERVER, true) . "\n" . print_r($_POST, true) . "\n\n", FILE_APPEND);以查看正在发送的标头和内容。有什么有用的吗?