记-curl post json数据,服务器后端$_POST接收不到数据

curl端:向某服务器后端接口返回数据

  $url = "http://xxx.com/getdataFile.php";

   $curl = curl_init(); 

        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        if(!$data){
            die();
        }
        if(is_array($data))
        {
            $data = json_encode($data);
        }
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        curl_setopt($curl, CURLOPT_HEADER, 0);
  #记住这个设置向curl地址传送json数据
        curl_setopt($curl, CURLOPT_HTTPHEADER,array(
                'Content-Type: application/json; charset=utf-8',
                'Content-Length:' . strlen($data),
                'Cache-Control: no-cache',
                'Pragma: no-cache'
        ));
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $res = curl_exec($curl);
        $errorno = curl_errno($curl);
        if ($errorno) {
            echo $errorno;
        }
        curl_close($curl);
服务器端:
  接收数据方式:$data = json_decode(file_get_contents('php://input'), true);或者$data = json_decode($GLOBALS['HTTP_RAW_POST_DATA'],true)
  注:$data = $_POST 这样,正常的接收方式是接收不到数据的
  附:
    ajax默认是以application/x-www-form-urlencoded方式提交。也就是常见的表单提交方式。在PHP中使用$_POST方式可以获取,但,如果将ajax的请求头强制指定为 application/json,那么你的 $_POST 就接收不到数据了

转载于:https://www.cnblogs.com/leonchan/p/11251192.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值