【发布时间】:2011-10-26 05:55:45
【问题描述】:
我正在编写一个注册为 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-ed JSON 对象进行交互吗?谢谢!
【问题讨论】:
-
JSON 正文的内容类型错误,因此它可能已被删除。但是试试
$HTTP_RAW_POST_DATA -
@mario 我以前见过这个变量,但不知道如何使用它。 json_decode($HTTP_RAW_POST_DATA);没用
-
参见手册页。需要先在
php.ini中启用。您还尝试过正确的 MIME 类型吗?有没有机会启用 mod_security?