CURL是一个非常强大的开源库,支持包括HTTP、FTP、TELNET等很多协议,我们使用它来发送HTTP请求。
使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤:
// 1. 初始化
$ch = curl_init();
// 2. 设置选项,包括URL
curl_setopt($ch,CURLOPT_URL,"http://www.baidu.com");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //获取的信息以变量形式的形式返回,而不是直接输出
curl_setopt($ch,CURLOPT_HEADER,0); //不返回HTTP头部信息
// 3. 执行并获取内容
$data = curl_exec($ch);
// 4. 释放curl句柄
curl_close($ch);
GET方式其实就是url带上参数就可以了,没有变化
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.baidu.com?xxx=123456&aaa=abcdef');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
POST方式需要设置CURLOPT_POST参数
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.baidu.com');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1); //设置以POST方式发送
$post_data = array(
"username" => "coder",
"password" => "12345"
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); //POST数据(必须数组形式)
$data = curl_exec($ch);
curl_close($ch);
基本用法就是这些,有时还会有一些根据需要设置HEADER信息的操作。
下面贴一下我常用的CURL方法
function curl_post($url,$arr){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json; charset=utf-8"));//POST发送json数据
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($arr));
$data = curl_exec($ch);
curl_close($ch);
return json_decode($data,true);
}