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();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_exec($ch);
curl_close($ch);
?>
实例1:使用curl向https://www.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_dump($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;
}
?>