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

在PHP中从JSON帖子读取HTTP请求正文时出现问题,php,json,post,http-post,Php,Json,Post,Http Post,我正在编写一个脚本,该脚本注册为webhook的端点。我知道它已成功注册,因为我正在将每个请求的头写入服务器日志。以下是一个示例: Content-Type: text/xml; charset=UTF-8 User-Agent: Jakarta Commons-HttpClient/3.1 Host: =={obfuscated}== Content-Length: 1918 我注册的API正在将一个JSON对象发布到我的脚本中,我想使用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对象正在等待解析。这似乎很简单,但事实并非如此

起初,我尝试使用
$\u POST['json']
或仅使用
$\u POST
,但由于数据不在数组中,我真的不确定如何像那样访问它

我试过使用
file\u get\u contents('php://input)
fopen('php://input“,”r“
带和不带
json_decode()
但运气不好。我不能使用
http\u get\u request\u body()
,因为我所在的服务器没有PECL,这是我无法控制的


是否还有其他方法可以与我丢失的POST-ed JSON对象交互?谢谢

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

$inputJSON = file_get_contents('php://input');
$input = json_decode($inputJSON, TRUE); //convert JSON into array
其中,
json\u decode
中的第二个参数以数组形式返回对象


希望这对其他人有帮助

即使以下操作有效

$inputJSON = file_get_contents('php://input');
如果要继续使用$\u POST,请将数据作为FormData发送

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

JSON正文的内容类型错误,因此可能已被删除。但是试试@mario,我以前见过这个变量,但不知道如何使用它。json_解码($HTTP_原始_POST_数据);没有查看手册页。首先需要在
php.ini
中启用它。你也试过正确的MIME类型了吗?mod_安全性是否有可能启用?对我来说也很有效。简直不敢相信PHP无法识别JSON数据。我知道它毕竟是原始数据类型,但仍然…
$\u POST
仅在接收带有
应用程序/x-www-form-urlencoded
多部分/表单数据
内容类型头的请求正文时才填充值。由于PHP请求主体的流性质,您可以在
$\u POST
中获取数据,也可以在输入流中获取数据,而不是两者都获取。