php接收curl传递不同参数类型的情况分析

本文探讨了PHP中使用Curl进行POST请求时,如何处理不同类型的参数(JSON、字符、数组)。通过示例代码展示了如何接收json、字符和数组格式的参数,指出以JSON格式传递时需通过`file_get_contents('php://input')`获取,而字符和数组格式则使用`$_POST`。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在我们PHP开发工作中可能会碰到需要通过Curl的方式传递指定的参数调用接口来获取数据的情况,而在我们编写接口的过程中接受传递过来的参数会根据传递的数据方式有关,下面是我工作中碰到的一些情况,主要是post提交数据的方式。

  • 我们创建一个post.php文件,内容如下
    /**
     * HTTP请求(支持HTTP/HTTPS,支持GET/POST)
     * @param $url  请求url地址
     * @param null $data post数据
     * @param int $timeout
     * @return mixed
     */
    function http_request($url, $data=null, $timeout=0){
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        if(!empty($data)){
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
        if ($timeout > 0) { //超时时间秒
            curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
        }
        $output = curl_exec($curl);
        $error = curl_errno($curl);
        curl_close($curl);
    
        if($error){
            return false;
        }
        return $output;
    }
    
    //json格式的方式投递参数
    echo http_request('localhost/index.php',json_encode(array('name'=>'aaa','age'=>25)));
    //字符格式的方式投递参数
    echo http_request('localhost/index.php','name=aaa&age=25');
    //数组格式的方式投递参数
    echo http_request('localhost/index.php',array('name'=>'aaa','age'=>25));
  • 创建一个接受参数信息的文件indxe.php,内容如下:
    echo json_encode($_POST);exit;
    echo file_get_contents('php://input');exit;

    通过测试我们发现:
    1、以字符和数组格式投递参数的时候,只能使用$_POST的方式接受参数
    2、以json格式投递的参数,只能使用file_get_contents('php://input')的方式接受参数;
    下面是测试时的截图:





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值