cURL是一个非常强大的工具,它支持多种多样的协议(HTTP,FTP,TELNET等等)进行数据传输.因而cURL不受限于它能干什么,不管是基本的HTTP请求还是复杂的FTP上传或者是与需要验证处理的HTTPS网站进行交互,cURL都可以胜任。PHP通过cURL函数库对cURL提供了支持,下面主要介绍PHP cURL中使用最频繁的GET、POST方法和返回数据的处理,以及一些有用的cURL设置项。
在我们通过cURL请求进行各样操作之前,首先我们需要初始化一个cURL的实例对象,我们可以通过调用curl_init()这个方法来完成,它返回一个cURL的句柄。该方法提供一个可选参数,可以通过该参数设置要发送请求的URL地址,在此我们先不传参,下面会用另一种方式进行设置。
当我们拿到cURL的句柄后,我们就可以对其进行一系列的参数设定,下面是一些主要的设置项:
CURLOPT_RETURNTRANSFER
true:将返回的数据以文件流的形式返回;false:将返回的数据直接输出显示;
CURLOPT_CONNECTTIMEOUT
发起连接时等待的时间(秒);
CURLOPT_TIMEOUT
请求超时时间(秒);
CURLOPT_USERAGENT
设置请求的用户代理;
CURLOPT_URL
设置请求的URL地址
CURLOPT_POST
是否以POST方式发起请求
CURLOPT_POSTFIELDS
POST参数值
我们可以通过调用curl_setopt()方法设定指定的cURL参数值,该方法接收三个参数,分别是cURL句柄、设置项(例如CURLOPT_URL)和设置值。
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://hejunhao.me');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
当我们需要设置大量参数时,显然重复使用大量curl_setopt并不方便,我们可以通过curl_setopt_array(),一次性设置大量参数。
<?php
$ch = curl_init();
$options = array(
CURLOPT_URL => 'http://hejunhao.me',
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_NOPROGRESS => False,
CURLOPT_TIMEOUT => 5
);
curl_setopt_array($ch, $options);
当我们设置好所有参数,准备发起请求时,我们通过调用curl_exec()方法来执行我们的请求,该方法接收一个cURL句柄参数。请求执行后会有三种可能的返回情况:
阅读全文 →