去评论
dz插件网

discuz插件中php curl的get/post类用法

admin
2021/01/17 17:08:07
discuz插件中php curl的get/post类用法:
  1. /**
  2. * @version 1.0
  3. * @date 2014-08-11
  4. * @author 十七号 <xialeistudio@gmail.com>
  5. * @license MIT
  6. * Class Request 网络工具类
  7. */
  8. class Request
  9. {
  10.     /**
  11.      * HTTP GET 请求
  12.      * @param string $url 请求地址
  13.      * @param array $data 请求数据
  14.      * @param null $cookie COOKIE
  15.      * @param null $cookiefile COOKIE 请求所用的COOKIE文件位置
  16.      * @param null $cookiesavepath 请求完成的COOKIE保存位置
  17.      * @param bool $encode 是否对请求参数进行 urlencode 处理
  18.      * @return mixed
  19.      * @throws Exception
  20.      */
  21.     public static function get($url, $data = array(), $cookie = null, $cookiefile = null,$cookiesavepath = null, $encode = true)
  22.     {
  23.         //初始化句柄
  24.         $ch = curl_init();
  25.         //处理GET参数
  26.         if(count($data)>0){
  27.             $query = $encode?http_build_query($data):urldecode(http_build_query($data));
  28.             curl_setopt($ch, CURLOPT_URL, $url . '?' . $query);
  29.         }else{
  30.             curl_setopt($ch, CURLOPT_URL, $url);
  31.         }
  32.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  33.         curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36');
  34.         //设置cookie
  35.         if (isset($cookie)) curl_setopt($ch, CURLOPT_COOKIE, $cookie);
  36.         //设置cookie请求文件
  37.         if (isset($cookiefile)){
  38.             if(!is_file($cookiefile)) throw new Exception('Cookie文件不存在');
  39.             curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
  40.         }
  41.         //设置cookie保存路径
  42.         if(isset($cookiesavepath)) curl_setopt($ch,CURLOPT_COOKIEJAR,$cookiesavepath);
  43.         //执行请求
  44.         $resp = curl_exec($ch);
  45.         //关闭句柄,释放资源
  46.         curl_close($ch);
  47.         return $resp;
  48.     }

  49.     /**
  50.      * HTTP POST 请求
  51.      * @param string $url 请求地址
  52.      * @param array $data 请求数据
  53.      * @param null $cookie 请求COOKIE
  54.      * @param null $cookiefile 请求时cookie文件位置
  55.      * @param null $cookiesavepath 请求完成的COOKIE保存位置
  56.      * @return string
  57.      * @throws Exception
  58.      */
  59.     public static function post($url, $data = array(), $cookie = null, $cookiefile = null,$cookiesavepath = null)
  60.     {
  61.         //初始化请求句柄
  62.         $ch = curl_init();
  63.         //参数设置
  64.         curl_setopt($ch, CURLOPT_URL, $url);
  65.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  66.         curl_setopt($ch,CURLOPT_POST,1);
  67.         curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
  68.         curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36');
  69.         //cookie设置
  70.         if (isset($cookie)) curl_setopt($ch, CURLOPT_COOKIE, $cookie);
  71.         //请求cookie设置
  72.         if (isset($cookiefile)){
  73.             if(!is_file($cookiefile)) throw new Exception('Cookie文件不存在');
  74.             curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
  75.         }
  76.         //设置cookie保存路径
  77.         if(isset($cookiesavepath)) curl_setopt($ch,CURLOPT_COOKIEJAR,$cookiesavepath);
  78.         $resp=curl_exec($ch);
  79.         curl_close($ch);
  80.         return $resp;
  81.     }
  82. }