在 webhook 请求 PHP 上接收空字符串
Posted
技术标签:
【中文标题】在 webhook 请求 PHP 上接收空字符串【英文标题】:Receiving empty string on webhook request PHP 【发布时间】:2022-01-15 10:31:45 【问题描述】:我正在尝试从 webhook 中提取客户信息,但是当我尝试打印时收到空字符串。这是我的端点 URL:
这是我的 php 代码:
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
$data = file_get_contents('php://input');
$acion=json_decode($data,true);
var_dump($acion);
exit();
?>
我的网页上打印了 NULL。非常感谢任何帮助。
【问题讨论】:
你如何调用/测试端点? 我认为这一行是为此服务的:$data = file_get_contents('php://input'); ? 该行仅表示您的脚本需要一个 JSON 编码的请求正文,而不是您如何测试它。 NULL 表示它没有得到那个 JSON。 那我该怎么办? 在下面查看我的答案并开始了解 HTTP 请求。 【参考方案1】:您的脚本需要一个有效的 JSON 编码请求正文,因此您应该相应地对其进行测试。您不能简单地在 Web 浏览器中访问 URL,因为没有以这种方式发送的请求正文。相反,您需要使用一些能够发送此类请求的工具,例如邮递员:
正如你在上面的截图中看到的,给定正确的输入,输出也是正确的。
【讨论】:
我现在将在 Postman 中检查它。我可以从端点以某种方式访问 PHP 数据,因为我需要在网页上打印它吗?谢谢。 我需要从支付提供商那里接收客户信息,我仍然在邮递员中获得 NULL 值。【参考方案2】:您的代码没有错误。
您获得 NULL 的原因可能是您收到的数据不是 JSON 格式。
您可以通过打印 $data 变量而不用json_decode()
解码来检查它
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
$data = file_get_contents('php://input');
echo $data;
exit();
?>
第二个原因可能是您通过 GET 请求接收数据。然后您可以使用$_GET[]
访问数据。
【讨论】:
以上是关于在 webhook 请求 PHP 上接收空字符串的主要内容,如果未能解决你的问题,请参考以下文章
Django Webhook 接收 Mailgun 的 post 请求
如何在 C# WCF 中接收 Stripe api webhook
Google PubSub / Gmail Webhook:发送电子邮件时始终从 PubSub 接收多个 POST 请求
markdown 在Webhook上接收Facebook主页