php的curl如何给其他服务器请求发送get、post请求

php的curl如何请求其他服务器上的数据

curl可以干什么?

  • curl是PHP的一个扩展,利用该扩展可以实现服务器之间的数据或文件传输

    也就是说curl就是一个工具,用来做服务器之间数据、文件传输的工具

    用来采集网络中的html网页文件、其他服务器提供接口数据等

开启curl扩展

(1) 在php.ini里面开启curl这个扩展
(2) 将PHP的安装路径保存到环境变量的系统变量中(环境变量之间的分隔符是英文的分号)
(3) 重启apache服务器
(4) 重启计算机

发送curl分为4步

  1. 初始化curl对应函数-> curl_init();

  2. 设置curl的请求信息,如请求地址、需要发送给目标服务器的数据、设置是否校验https等 对应函

    数 -> curl_setop();

  3. 执行发送请求 对应函数-> curl_exec();

  4. 发送请求结束后记得关闭不适用的curl 对应函数-> curl_close();

代码实例

<?php
// 第一步:创建一个新cURL资源
$ch = curl_init();//

// 第二步设置URL和相应的选项
//curl_setopt(
	参数1:curl资源,
    参数2:需要设置的CURLOPT_XXX选项,用来设置curl的各种请求,如是否携带参数,是否验证https等,是否为	           POST请求,根据手册,此参数为固定写法。
    参数3:语句柄对应的value值
   )
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, false);

// 抓取URL并把它传递给浏览器
curl_exec($ch);

//关闭cURL资源,并且释放系统资源
curl_close($ch);
?>

实例1:使用curl向https://xxx.xxx.com发送POST请求(注意这里的$data为json)

<?php

function request_curl()
{
    //初使化init方法
    $ch = curl_init();

    //指定URL
    curl_setopt($ch, CURLOPT_URL, 'https://xxx.aaa.com/api/createUser');

    //设定请求后返回结果
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    //声明使用POST方式来进行发送
    curl_setopt($ch, CURLOPT_POST, 1);

    //发送什么数据到目标服务器呢
    $data = json_encode([
        'userName' => 小明,
        'age' => 18,
        'sex' => '男'
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);


    //忽略证书(目标服务器的接口有https证书时使用)
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

    //忽略header头信息
    curl_setopt($ch, CURLOPT_HEADER, 0);

    //设置超时时间
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);

    //发送请求
    $output = curl_exec($ch);

    //关闭curl
    curl_close($ch);

    //打印目标服务器返回给我们的数据
    var_vump($output);

    //返回数据
    return $output;
}

?>

实例2:使用curl发送post请求(这里发送的数据$data为数组类型)

<?php

function request_curl()
{
    // 1. 初始化一个cURL会话
    $ch = curl_init();
    // 2. 设置请求选项, 包括具体的url
    curl_setopt($ch, CURLOPT_URL, 'https:xxx.aaa.com/api/createdUser');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    // 设置请求为post类型
    curl_setopt($ch, CURLOPT_POST, 1);
    // 添加post数据到请求中
    $data = [
        'name'=>'小明',
        'sex'=>'男',
        'age'=>18,
    ];
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    //启用时会将头文件的信息作为数据流输出
    curl_setopt($ch, CURLOPT_HEADER, 0);
    // 3. 执行一个cURL会话并且获取相关回复
    $response = curl_exec($ch);
    // 4. 释放cURL句柄,关闭一个cURL会话
    curl_close($ch);
    //打印返回值
    var_dump($response);
    return $response;
}

?>

实例3:发送get请求

<?php

function request_curl()
{
    // 1. 初始化一个cURL会话
    $ch = curl_init();
    //设置选项,包括URL
    curl_setopt($ch, CURLOPT_URL, 'http:xxx.aaa.com/api/user?name=小明&age=18');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    //执行并获取HTML文档内容
    $response = curl_exec($ch);
    // 4. 释放cURL句柄,关闭一个cURL会话
    curl_close($ch);
    return $response;
}

?>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章