一尘不染

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

php

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

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

我已注册的API将JSON对象发布到脚本中,我想使用PHP解析该对象。从请求标头中可以看到,有一个不错的大胖JSON对象正在等待解析。看起来很简单,但事实并非如此。

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

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

还有其他与我缺少的POST版本JSON对象进行交互的方式吗?谢谢!


阅读 229

收藏
2020-05-26

共1个答案

一尘不染

感谢其他人的投入。原来我只需要

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

其中的第二个参数以json_decode数组形式返回对象。

希望这对别人有帮助!

2020-05-26