重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
PHP接收JSON格式的数据
创新互联建站从2013年创立,是专业互联网技术服务公司,拥有项目网站制作、网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元商丘做网站,已为上家服务,为商丘各地企业和个人服务,联系电话:18982081108
在API服务中,目前流行采用json形式来交互。
给前端调用的接口输出Json数据,这个比较简单,只需要组织好数据,用json_encode($array) 转化一下,前端就得到json格式的数据。
接收前端提交的json数据稍微复杂一点,原因是:PHP默认识别的数据类型是application/x-标准的数据类型。因此,对型如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 输出JSON格式,使用json_encode函数即可
例如:
?php
header('Content-type: text/json');
$fruits = array (
"fruits" = array("a" = "orange", "b" = "banana", "c" = "apple"),
"numbers" = array(1, 2, 3, 4, 5, 6),
"holes" = array("first", 5 = "second", "third")
);
echo json_encode($fruits);
?
得到结果:
{"fruits":{"a":"orange","b":"banana","c":"apple"},"numbers":[1,2,3,4,5,6],"holes":{"0":"first","5":"second","6":"third"}}
在我的博客《PHP cURL实现模拟登录与采集使用方法详解》中“十一、发送与获取json数据”对这个问题做了详细讲解,下面是示例代码:
?php
#json数据
$url = '';
$data = '{"a":"b"}'; //数据格式1:直接json格式类型数据
$length = strlen($data);
$header = array(
'Content-Length: ' . $length, //不是必需的
'Content-Type: text/json',
);
$ch = curl_init($url); //初始化curl
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$content = curl_exec($ch); //执行并存储结果
curl_close($ch);
echo $content;
#数据格式2:\n分割数据
$data = [
'name:Zjmainstay',
'website:',
];
$data = implode("\n", $data);
#数据格式3:分割数据
$data = 'name:Zjmainstaywebsite:';
文章还涉及很多php curl相关内容,如需了解,请访问查看。
PHP 支持8种基本的数据类型。
一:四种标量类型:
1、boolean (布尔型)
2、integer (整型)
3、float (浮点型, 也称作 double)
4、string (字符串)
二:两种复合类型:
1、array (数组)
2、object (对象)
三:两种特殊类型:
1、resource (资源)
2、NULL (NULL)
PHP,是英文超文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛地运用。