您的位置:首页 > 编程语言 > PHP开发

PHP cURL POST JSON数据

2016-04-13 00:00 429 查看
摘要: PHP cURL POST JSON数据发送与接收demo

<?php
// client发送数据
$data = array(
0=>array(
'mobile' => '15011111111',
'username' => '张三'
),
1=>array(
'mobile' => '15011111111',
'username' => '李四'
)
);
$url = 'http://api.url.com;
$resData = doRequest($url, $data, 'POST');
print_r(json_decode($resData, TRUE));

function  doRequest($url, $data, $type = 'GET')
{
if(empty($url) || empty($data) || !is_array($data))
{
return FALSE;
}

$objJson = json_encode($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $type);
curl_setopt($ch, CURLOPT_POSTFIELDS,$objJson);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json; charset=utf-8',
'Content-Length: ' . strlen($objJson))
);
$returnData = curl_exec($ch);
curl_close($ch);
return $returnData;
}

//服务器接收
<?php
/**
* 我里我在测试的时候使用$_POST,file_put_contents("php://input")都不能接收到传过来的数据
* 最后使用$GLOBALS['HTTP_RAW_POST_DATA']成功接收到使过来的JSON数据
*
* $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']来接收
*
*     补充说明:PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型
*/

$requestData =  $GLOBALS['HTTP_RAW_POST_DATA'];
echo $requestData;

//输出
/**
*[
*    {
*        mobile: "15011111111",
*        username: "张三"
*    },
*    {
*        mobile: "15011111111",
*        username: "李四"
*    }
*]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PHP cURL POST JSON 数据