CURL的一些使用

使用CURL发送请求的基本流程


使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤:

  1. 初始化连接句柄;
  2. 设置CURL选项; 
  3. 执行并获取结果;
  4. 释放VURL连接句柄

下面的程序片段是使用CURL发送HTTP的典型过程

// 1. 初始化
 $ch = curl_init();
 // 2. 设置选项,包括URL
 curl_setopt($ch,CURLOPT_URL,"http://www.devdo.net");
 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch,CURLOPT_HEADER,0);
 // 3. 执行并获取HTML文档内容
 $output = curl_exec($ch);
 if($output === FALSE ){
 echo "CURL Error:".curl_error($ch);
 }
 // 4. 释放curl句柄
 curl_close($ch);

下面是CURL一些函数的汇总


       1.初始化连接句柄; 

        curl_init():初始化CURL连接 

        2.设置CURL选项; 

        curl_setopt():通过设定CURL函数库定义的选项来定制HTTP请求

        curl_setopt()里有多种选项(在POST请求中也是可以传输GET数据的,只需要在URL中拼装GET请求数据即可):

               CURLOPT_URL : 指定请求的URL; 

               CURLOPT_RETURNTRANSFER: 设置为1表示稍后执行的curl_exec函数的返回是URL的返回字符串,而不是把返回字符串定向到标准输出并返回TRUE;

               CURLLOPT_HEADER: 设置为0表示不返回HTTP头部信息。

          专属post请求的选项

               CURLOPT_POST : 标识这个请求是一个POST请求;

               CURLOPT_POSTFIELDS : 传输参数;

       3.执行并获取结果;

       curl_exec() :执行CURL请求,如果没有错误发生,该函数的返回是对应URL返回的数据,以字符串表示满意;如果发生错误,该函数返回 FALSE。需要注意的是,判断输出是否为FALSE用的是全等号,这是为了区分返回空串和出错的情况。

       4.释放CURL连接句柄;

       curl_close():关闭CURL连接 


下面是CURL的不同请求

         1.get请求

**
 *@desc 封闭curl的调用接口,get的请求方式。
*/
function doCurlGetRequest($url,$data,$timeout = 5){
 if($curl == "" || $timeout <= 0){
 return false;
 }
 $url = $url.'?'.http_bulid_query($data);
 $con = curl_init((string)$url);
 curl_setopt($con, CURLOPT_HEADER, false);
 curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
 curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);
 curl_close($con);
 
 return curl_exec($con);
}

         2.post请求

/**
** @desc 封装 curl 的调用接口,post的请求方式
**/
function doCurlPostRequest($url,$requestString,$timeout = 5){
 if($url == '' || $requestString == '' || $timeout <=0){
 return false;
 }
 $con = curl_init((string)$url);
 curl_setopt($con, CURLOPT_HEADER, false);
 curl_setopt($con, CURLOPT_POSTFIELDS, $requestString);
 curl_setopt($con, CURLOPT_POST,true);
 curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
 curl_setopt($con, CURLOPT_TIMEOUT,(int)$timeout);
 return curl_exec($con); 
 curl_close($con);
}

猜你喜欢

转载自blog.csdn.net/MrEahon/article/details/89466094