php curl发送get、post请求

直接上代码,如下。

注意请求参数为json格式的话,需要 json_encode($params)

php 复制代码
function doRequest($url, $method = 'GET', $params = [])
{
    $ch = curl_init();
    //设置抓取的url
    curl_setopt($ch, CURLOPT_URL, $url);
    //不设置头文件的信息作为数据流输出
    curl_setopt($ch, CURLOPT_HEADER, 0);
    //设置获取的信息以文件流的形式返回,而不是直接输出。
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    //设置curl允许执行的最长秒数
    curl_setopt($ch, CURLOPT_TIMEOUT, 60);

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

    //判断是否为post请求
    if ($method == 'POST') {
        //设置post方式提交
        curl_setopt($ch, CURLOPT_POST, 1);
        //全部数据使用HTTP协议中的"POST"操作来发送。
        //要发送文件,在文件名前面加上@前缀并使用完整路径。
        //这个参数可以通过urlencoded后的字符串类似'para1=val1¶2=val2&...'或使用一个以字段名为键值,字段数据为值的数组。
        //如果value是一个数组,Content-Type头将会被设置成multipart/form-data。
        curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
//        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));//参数是json的话就不需要这个

        //设置post发送的参数为json格式--注意这里如果不需要json格式 可以去掉。
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json; charset=utf-8',//只适用于请求参数为json的时候
            'Content-Length:' . strlen($params),//只适用于请求参数为json的时候
            'Cache-Control: no-cache',
            'Pragma: no-cache'
        ));
    }

    $response = curl_exec($ch);
    //可用来检查curl错误
//    $errorNo = curl_errno($curl);
//    if ($errorNo) {
//        return $errorNo;
//    }
    curl_close($ch);
    return json_decode($response, true);
}

再来一个curl模拟formdata上传图片的请求示例

php 复制代码
function()
{
	$filePath = './image.png'; //本地图片路径
    //构建multipart/form-data的数据
    $data = array(
        'debug' => 1,
        'file' => new CURLFile($filePath, 'image/png', 'image.png')
    );

    //发送post请求
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($ch);
    if (curl_errno($ch)) {
//        echo 'Error:' . curl_error($ch);
        return false;
    }
    curl_close($ch);

    return json_decode($response, true);
}

CURL参数说明请参考这里!!

相关推荐
网安_秋刀鱼4 小时前
PHP代码审计 - SQL注入
sql·web安全·网络安全·php·1024程序员节
B20080116刘实4 小时前
CTF攻防世界小白刷题自学笔记13
开发语言·笔记·web安全·网络安全·php
数据小小爬虫10 小时前
如何用Java爬虫“偷窥”淘宝商品类目API的返回值
java·爬虫·php
汤米粥12 小时前
小皮PHP连接数据库提示could not find driver
开发语言·php
fakaifa14 小时前
CRMEB Pro版v3.1源码全开源+PC端+Uniapp前端+搭建教程
前端·小程序·uni-app·php·源码下载
万岳软件开发小城17 小时前
外卖跑腿APP开发实战:如何基于同城O2O系统源码搭建平台
php·app开发·同城o2o系统源码·同城外卖跑腿系统源码·外卖平台开发·外卖app
数勋API19 小时前
银行卡归属地查询API接口如何用PHP调用
开发语言·云计算·php
多客软件佳佳19 小时前
校园交友系统的设计与实现(开源版+三端交付+搭建+售后)
小程序·前端框架·uni-app·开源·php·交友
网络安全-海哥20 小时前
【VLANPWN】一款针对VLAN的安全研究和渗透测试工具
开发语言·javascript·安全·ecmascript·php·网安入门
豆豆21 小时前
如何选择企业网站模版来搭建网站?
服务器·开发语言·前端·php·软件构建