PHP cURL 的常见用法

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

如有问题和技术交流,欢迎留言!

发表评论

邮箱地址不会被公开。 必填项已用*标注

*

code