php的curl如何请求其他服务器上的数据
curl可以干什么?
-
curl是PHP的一个扩展,利用该扩展可以实现服务器之间的数据或文件传输
也就是说curl就是一个工具,用来做服务器之间数据、文件传输的工具
用来采集网络中的html网页文件、其他服务器提供接口数据等
开启curl扩展
(1) 在php.ini里面开启curl这个扩展
(2) 将PHP的安装路径保存到环境变量的系统变量中(环境变量之间的分隔符是英文的分号)
(3) 重启apache服务器
(4) 重启计算机
发送curl分为4步
-
初始化curl对应函数-> curl_init();
-
设置curl的请求信息,如请求地址、需要发送给目标服务器的数据、设置是否校验https等 对应函
数 -> curl_setop();
-
执行发送请求 对应函数-> curl_exec();
-
发送请求结束后记得关闭不适用的curl 对应函数-> curl_close();
代码实例
<?php
$ch = curl_init();
参数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);
curl_exec($ch);
curl_close($ch);
?>
实例1:使用curl向https://xxx.xxx.com发送POST请求(注意这里的$data为json)
<?php
function request_curl()
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://xxx.aaa.com/api/createUser');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
$data = json_encode([
'userName' => 小明,
'age' => 18,
'sex' => '男'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$output = curl_exec($ch);
curl_close($ch);
var_vump($output);
return $output;
}
?>
实例2:使用curl发送post请求(这里发送的数据$data为数组类型)
<?php
function request_curl()
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https:xxx.aaa.com/api/createdUser');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
$data = [
'name'=>'小明',
'sex'=>'男',
'age'=>18,
];
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HEADER, 0);
$response = curl_exec($ch);
curl_close($ch);
var_dump($response);
return $response;
}
?>
实例3:发送get请求
<?php
function request_curl()
{
$ch = curl_init();
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);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
?>