在 PHP 中从 JSON POST 读取 HTTP 请求正文时出现问题

2022-08-30 08:56:43

我正在编写一个脚本,该脚本已注册为 Webhook 的终结点。我知道它已成功注册,因为我正在将每个请求的标头写入服务器日志。下面是一个示例:

Content-Type: text/xml; charset=UTF-8
User-Agent: Jakarta Commons-HttpClient/3.1
Host: =={obfuscated}== 
Content-Length: 1918

我注册的API正在将JSON对象POST-ing到我的脚本中,我想使用PHP解析该对象。从请求标头中可以看出,有一个漂亮的大胖JSON对象等待解析。这似乎很简单,但事实并非如此。

起初我尝试使用或仅使用,但由于数据不在数组中,因此我真的不确定如何像这样访问它。$_POST['json']$_POST

我尝试过使用和有和没有,但没有运气。我无法使用,因为我所在的服务器没有PECL,这超出了我的控制范围。file_get_contents('php://input')fopen('php://input', 'r')json_decode()http_get_request_body()

是否有任何其他方法可以与我缺少的 POST-ed JSON 对象进行交互?谢谢!


答案 1

事实证明,我只是需要

$inputJSON = file_get_contents('php://input');
$input = json_decode($inputJSON, TRUE); //convert JSON into array

其中,中的第二个参数将对象作为数组返回。json_decode


答案 2

即使以下工作。

$inputJSON = file_get_contents('php://input');

如果要继续使用 $_POST将数据作为 FormData 发送

var fd = new FormData();
fd.append('key', 'value');
return axios.post('url', fd)

推荐