PHP cURL 是一种扩展库,能够连接通讯各种服务器、使用各种协议;
一、基本使用步骤:
1. 初始化 cURL 会话: curl_init
2. 设置 cURL 传输选项: curl_setopt
3. 执行 cURL 会话:curl_exec
4. 返回当前会话最后一次错误的字符串:curl_error
5. 关闭 cURL 会话,也就是关闭资源句柄:curl_close
二、GET请求方法:
//初始化
$ch = curl_init();
//设置选项
// 设置请求地址
curl_setopt($ch, CURLOPT_URL, "http://xxxx.xxxx.xxx");
//获取的信息以字符串返回
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//设置请求头信息
curl_setopt($ch, CURLOPT_HTTPHEADER,array('Content-Type: application/json;charset=utf-8'));
//执行并获取返回内容
$output = curl_exec($ch);
// 错误信息获取
$error = curl_error($ch);
//释放curl资源句柄
curl_close($ch);
//打印获得的数据
print_r('<pre/>');
print_r($error);
print_r($output);
三、POST请求方法:
//初始化
$ch = curl_init();
//设置选项
$post_data = json_encode(array('user'=>'test','pwd'=>'test'));
// 设置请求地址
curl_setopt($ch, CURLOPT_URL, "http://xxxx.xxxx.xxx");
//设置post请求方式
curl_setopt($ch, CURLOPT_POST, 1);
//设置post请求参数
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
//获取的信息以字符串返回
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//设置请求头信息
curl_setopt($ch, CURLOPT_HTTPHEADER,array('Content-Type: application/json;charset=utf-8'));
//执行并获取返回内容
$output = curl_exec($ch);
//错误信息获取
$error = curl_error($ch);
//释放curl资源句柄
curl_close($ch);
//打印获得的数据
print_r('<pre/>');
print_r($error);
print_r($output);
四、模拟浏览器请求方法:
$ch = curl_init('http://xxx.xxx.xxx');
// header头信息作为数据流输出
curl_setopt($ch, CURLOPT_HEADER, 1);
//不输出 BODY 部分
curl_setopt($ch, CURLOPT_NOBODY, 1);
// 伪装浏览器
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36');
// 保存到字符串而不是输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$rs = curl_exec($ch);
$error =curl_error($ch);
//关闭资源
curl_close($ch);
//过滤cookie
preg_match('%.PHPSESSID=.*?;%sim',$rs,$arr);
var_dump($rs,$arr);
$cookies=str_replace('PHPSESSID=','',$arr[0]);
$cookies=rtrim($cookies,';');
//获取sessionid
var_dump($error,$cookies);
五、PUT 请求方法:
//初始化
$ch = curl_init();
//设置选项
$data = json_encode(array('user'=>'test','pwd'=>'test'));
// 设置请求地址
curl_setopt($ch, CURLOPT_URL, "http://xxxx.xxxx.xxx");
//设置PUT请求方式
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
//设置请求参数
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
//获取的信息以字符串返回
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//设置请求头信息
curl_setopt($ch, CURLOPT_HTTPHEADER,array('Content-Type: application/json;charset=utf-8'));
//执行并获取返回内容
$output = curl_exec($ch);
//错误信息获取
$error = curl_error($ch);
//释放curl资源句柄
curl_close($ch);
//打印获得的数据
print_r('<pre/>');
print_r($error);
print_r($output);
六、DELETE 请求方法:
//初始化
$ch = curl_init();
//设置选项
$data = json_encode(array('user'=>'test','pwd'=>'test'));
// 设置请求地址
curl_setopt($ch, CURLOPT_URL, "http://xxxx.xxxx.xxx");
//设置DELETE请求方式
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
//设置请求参数
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
//获取的信息以字符串返回
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//设置请求头信息
curl_setopt($ch, CURLOPT_HTTPHEADER,array('Content-Type: application/json;charset=utf-8'));
//执行并获取返回内容
$output = curl_exec($ch);
//错误信息获取
$error = curl_error($ch);
//释放curl资源句柄
curl_close($ch);
//打印获得的数据
print_r('<pre/>');
print_r($error);
print_r($output);
更多curl_setopt 设置参数及解释请参考:https://www.php.net/manual/zh/function.curl-setopt.php
更多使用请参考PHP手册地址:https://www.php.net/manual/zh/book.curl.php
如有问题和技术交流,欢迎留言!