调整版PHP的CURL类(POST、GET、PUT、DELE

发布于:2017年11月15日 已被阅读

调整版PHP的CURL类(POST、GET、PUT、DELETE)

因为经常用到所以研究了下重新自己写了个比较完整的,至少满足自己平常的需求。



[php] view plain copy

  1.     /** 

  2.      * @param $URL 请求链接 

  3.      * @param null $data 数据 array() string 

  4.      * @param string $type 请求类型 POST GET PUT DELETE 

  5.      * @param string $headers 头部信息 

  6.      * @param string $data_type 返回数据类型 默认为json 

  7.      * @return mixed 

  8.      */  

  9.     function callInterfaceCommon($URL,$data=null,$type='POST',$headers="",$data_type='json'){  

  10.         $ch = curl_init();  

  11.         //判断ssl连接方式  

  12.         if(stripos($URL'https://') !== false) {  

  13.             curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  

  14.             curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);  

  15.             curl_setopt($ch, CURLOPT_SSLVERSION, 1);  

  16.         }  

  17.         $connttime=300; //连接等待时间500毫秒  

  18.         $timeout = 15000;//超时时间15秒  

  19.   

  20.         $querystring = "";  

  21.         if (is_array($data)) {  

  22.             // Change data in to postable data  

  23.             foreach ($data as $key => $val) {  

  24.                 if (is_array($val)) {  

  25.                     foreach ($val as $val2) {  

  26.                         $querystring .= urlencode($key).'='.urlencode($val2).'&';  

  27.                     }  

  28.                 } else {  

  29.                     $querystring .= urlencode($key).'='.urlencode($val).'&';  

  30.                 }  

  31.             }  

  32.             $querystring = substr($querystring, 0, -1); // Eliminate unnecessary &  

  33.         } else {  

  34.             $querystring = $data;  

  35.         }  

  36.   

  37.        // echo $querystring;  

  38.         curl_setopt ($ch, CURLOPT_URL, $URL); //发贴地址  

  39.         //设置HEADER头部信息  

  40. //        if($headers!=""){  

  41. //            curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers);  

  42. //        }else {  

  43. //            curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Content-type: text/json'));  

  44. //        }  

  45.         curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);//反馈信息  

  46.         curl_setopt ($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); //http 1.1版本  

  47.   

  48.         curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT_MS, $connttime);//连接等待时间  

  49.         curl_setopt ($ch, CURLOPT_TIMEOUT_MS, $timeout);//超时时间  

  50.   

  51.         switch ($type){  

  52.             case "GET" : curl_setopt($ch, CURLOPT_HTTPGET, true);break;  

  53.             case "POST": curl_setopt($ch, CURLOPT_POST,true);  

  54.                 curl_setopt($ch, CURLOPT_POSTFIELDS,$querystring);break;  

  55.             case "PUT" : curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "PUT");  

  56.                 curl_setopt($ch, CURLOPT_POSTFIELDS,$querystring);break;  

  57.             case "DELETE":curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "DELETE");  

  58.                 curl_setopt($ch, CURLOPT_POSTFIELDS,$querystring);break;  

  59.         }  

  60.         $file_contents = curl_exec($ch);//获得返回值  

  61.        // echo time().'<br>';  

  62.         $status = curl_getinfo($ch);  

  63.         //dump($status);  

  64.         curl_close($ch);  

  65.         if($data_type=="json"||$data_type=="JSON")  

  66.         {  

  67.             return json_encode($file_contents);  

  68.         }else  

  69.         {  

  70.             return $file_contents;  

  71.         }  

  72.   

  73.   

  74.     }  




版权声明:不能随便乱复制不然我会生气的,我生气了我自己都害怕我自己,有需要讨论的可以加我扣扣:377-47-3611