一、什么是CURL?

    CURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。最爽的是,PHP也支持 cURL 库。使用PHP的cURL库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了。无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内容,cURL 是一个功能强大的PHP库。

二、CURL函数库。

curl_close — 关闭一个curl会话
curl_copy_handle — 拷贝一个curl连接资源的所有内容和参数
curl_errno — 返回一个包含当前会话错误信息的数字编号
curl_error — 返回一个包含当前会话错误信息的字符串
curl_exec — 执行一个curl会话
curl_getinfo — 获取一个curl连接资源句柄的信息
curl_init — 初始化一个curl会话
curl_multi_add_handle — 向curl批处理会话中添加单独的curl句柄资源
curl_multi_close — 关闭一个批处理句柄资源
curl_multi_exec — 解析一个curl批处理句柄
curl_multi_getcontent — 返回获取的输出的文本流
curl_multi_info_read — 获取当前解析的curl的相关传输信息
curl_multi_init — 初始化一个curl批处理句柄资源
curl_multi_remove_handle — 移除curl批处理句柄资源中的某个句柄资源
curl_multi_select — Get all the sockets associated with the cURL extension, which can then be “selected”
curl_setopt_array — 以数组的形式为一个curl设置会话参数
curl_setopt — 为一个curl设置会话参数
curl_version — 获取curl相关的版本信息

curl_init()函数的作用初始化一个curl会话,curl_init()函数唯一的一个参数是可选的,表示一个url地址。
curl_exec()函数的作用是执行一个curl会话,唯一的参数是curl_init()函数返回的句柄。
curl_close()函数的作用是关闭一个curl会话,唯一的参数是curl_init()函数返回的句柄。

 

三、PHP建立CURL请求的基本步骤

①:初始化

curl_init()

②:设置属性

curl_setopt().有一长串cURL参数可供设置,它们能指定URL请求的各个细节。

③:执行并获取结果

curl_exec()

④:释放句柄

curl_close()

 四、CURL实现GET和POST

curl get请求:

function curl_get($url){

  $header = array(
      'Accept: application/json',
   );
   $curl = curl_init();
   //设置抓取的url
   curl_setopt($curl, CURLOPT_URL, $url);
   //设置头文件的信息作为数据流输出
   curl_setopt($curl, CURLOPT_HEADER, 0);
   // 超时设置,以秒为单位
   curl_setopt($curl, CURLOPT_TIMEOUT, 1);

   // 超时设置,以毫秒为单位
   // curl_setopt($curl, CURLOPT_TIMEOUT_MS, 500);

   // 设置请求头
   curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
   //设置获取的信息以文件流的形式返回,而不是直接输出。
   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
   curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
   //执行命令
   $data = curl_exec($curl);

   // 显示错误信息
   if (curl_error($curl)) {
       print "Error: " . curl_error($curl);
   } else {
       // 打印返回的内容
       var_dump($data);
       curl_close($curl);
   }
}

curl post请求:

// $url 请求的地址
// $postdata 传输数据
function curl_post( $url, $postdata ) {
  $header = array(
      'Accept: application/json',
   );
   //初始化
   $curl = curl_init();
   //设置抓取的url
   curl_setopt($curl, CURLOPT_URL, $url);
   //设置头文件的信息作为数据流输出
   curl_setopt($curl, CURLOPT_HEADER, 0);
   //设置获取的信息以文件流的形式返回,而不是直接输出。
   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
   // 超时设置
   curl_setopt($curl, CURLOPT_TIMEOUT, 10);

   // 超时设置,以毫秒为单位
   // curl_setopt($curl, CURLOPT_TIMEOUT_MS, 500);

   // 设置请求头
   curl_setopt($curl, CURLOPT_HTTPHEADER, $header);

   curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE );
   curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE );

   //设置post方式提交
   curl_setopt($curl, CURLOPT_POST, 1);
   curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
   //执行命令
   $data = curl_exec($curl);
   // 显示错误信息
   if (curl_error($curl)) {
       print "Error: " . curl_error($curl);
   } else {
       // 打印返回的内容
       var_dump($data);
       curl_close($curl);
   }
}