一、简介
cURL是一个强大的库,能够连接通讯各种服务器、使用各种协议。同时支持 HTTPS 证书、HTTP POST、HTTP PUT、 FTP 上传(也能通过 PHP 的 FTP 扩展完成)、HTTP 基于表单的上传、代理、cookies、用户名+密码的认证。
二、基本步骤
使用cURL一般有以下几个简单步骤:
1、初始化一个会话
2、设置 cURL 传输选项
3、执行会话
4、关闭会话
下面通过一个简单的例子来说明这4个步骤
$ch = curl_init();//初始化 cURL 会话,返回一个cURL句柄,供curl_setopt()、 curl_exec() 和 curl_close() 函数使用。
curl_setopt($ch, CURLOPT_URL, "www.baidu.com"); //设置URL
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //将curl_exec()获取的信息以字符串返回,而不是直接输出
$output = curl_exec($ch);//执行cURL会话
curl_close($ch);//关闭cURL会话
echo ''
;
print_r($output);
echo '
';
现在根据手册介绍和实际代码介绍这几个函数:
curl_init ([ string $url = NULL ] ) 初始化一个新的会话,返回一个cURL句柄,可以提供一个url参数
curl_close (resource $ch ) 关闭一个cURL会话释放所有资源,参数是一个cURL句柄
curl_setopt (resource $ch , int $option , mixed $value ) 设置 cURL 传输选项,这个函数可以设置很多参数,这里就先讲我们使用的2个参数。
CURLOPT_URL 需要获取的 URL 地址,也可以在curl_init() 初始化会话的时候。
例如:$ch = curl_init(“www.baidu.com”);
CURLOPT_RETURNTRANSFER
设置为true时,curl_exec函数的返回是URL的返回字符串,
这是为false时,直接将返回的字符串输出
三、获取一个cURL连接资源句柄的信息
curl_getinfo ( resource $ch [, int $opt = 0 ] )
只传资源句柄时会返回所有相关信息,例如:
$info = curl_getinfo($ch);
echo ''
;
print_r($info);
echo '
';
$info = curl_getinfo($ch,CURLINFO_TOTAL_TIME);
echo ''
;
print_r($info);
echo '
';
结果是显示了0.062
四、使用cURL发送GET请求
发送GET请求一般会带一些参数,可以使用PHP提供的函数http_build_query,该函数接收一个关联数组返回GET请求字符串。
函数演示:
$data = ['name'=>'wuhenzhiyi','age'=>20];
$query = http_build_query($data);
echo $query;//输出结果name=wuhenzhiyi&age=20
学习这个函数之前我一般都是用字符串拼接,不仅麻烦还不灵活,用这个函数之后可以把数组变成GET请求方式,也可以把数据变成json格式,方便用于不同的地方。
回到正题,使用cURL发送GET请求,基本和上面的基础步骤一样
$data = ['name'=>'wuhenzhiyi','age'=>30];
$query = http_build_query($data);
$url = 'www.baidu.com';
$url = $url.'?'.$query;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_exec($ch);
curl_close($ch);//关闭cURL会话
五、使用cURL发送POST请求
直接上代码:
$data = ['name'=>'wuhenzhiyi','age'=>30];
$query = http_build_query($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true); //表明使用post方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $query); //传入post数据
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_exec($ch);
curl_close($ch);
六、结语
PHP的cURL还有很多功能,这里就不详细介绍了,先从简单的学习起,有兴趣的可以看手册文档研究更多有趣的内容。
本篇文章有些粗糙,还请见谅。
马上就过年了,新的一年,祝大家新年快乐!!!