PHP接收JSON格式的数据

在API服务中,目前流行采用json形式来交互。 给前端调用的接口输出Json数据,这个比较简单,只需要组织好数据,用json_encode($array) 转化一下,前端就得到json格式的数据。 接收前端提交的json数据稍微复杂一点,原因是:PHP默认识别的数据类型是`application/x-www.form-urlencoded`标准的数据类型。因此,对型如text/xml 或者 soap 或者 `application/octet-stream` 和`application/json`格式之类的内容无法解析,如果用$_POST数组来接收就会失败! 此时可以使用`$GLOBALS['HTTP_RAW_POST_DATA']`或 `file_get_contents('php://input')` 来获取提交的数据 查看手册,可以发现`$GLOBALS['HTTP_RAW_POST_DATA']`和 `$_POST`的区别: `$_POST`:通过 HTTP POST 方法传递的变量组成的数组,是自动全局变量。 `$GLOBALS['HTTP_RAW_POST_DATA']` :总是产生 `$HTTP_RAW_POST_DATA` 变量包含有原始的 POST 数据。此变量仅在碰到未识别 MIME 类型的数据时产生。 `$HTTP_RAW_POST_DATA` 对于 `enctype="multipart/form-data"` 表单数据不可用。也就是说基本上`$GLOBALS['HTTP_RAW_POST_DATA']` 和 `$_POST`是一样的。但是如果post过来的数据不是PHP能够识别的,你可以用 `$GLOBALS['HTTP_RAW_POST_DATA']`来接收,比如 text/xml 或者 soap 等等。 #### 补充说明 PHP默认识别的数据类型是`application/x-www.form-urlencoded`标准的数据类型。
联系我们

邮箱 626512443@qq.com
电话 18611320371(微信)
QQ群 235681453

Copyright © 2015-2022

备案号:京ICP备15003423号-3