調整版PHP的CURL類(POST、GET、PUT、DELETE)

調整版PHP的CURL類(POST、GET、PUT、DELETE)

因爲經常用到所以研究了下重新自己寫了個比較完整的,至少滿足自己平常的需求。


    /**
     * @param $URL 請求鏈接
     * @param null $data 數據 array() string
     * @param string $type 請求類型 POST GET PUT DELETE
     * @param string $headers 頭部信息
     * @param string $data_type 返回數據類型 默認爲json
     * @return mixed
     */
    function callInterfaceCommon($URL,$data=null,$type='POST',$headers="",$data_type='json'){
        $ch = curl_init();
        //判斷ssl連接方式
        if(stripos($URL, 'https://') !== false) {
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
            curl_setopt($ch, CURLOPT_SSLVERSION, 1);
        }
        $connttime=300; //連接等待時間500毫秒
        $timeout = 15000;//超時時間15秒

        $querystring = "";
        if (is_array($data)) {
            // Change data in to postable data
            foreach ($data as $key => $val) {
                if (is_array($val)) {
                    foreach ($val as $val2) {
                        $querystring .= urlencode($key).'='.urlencode($val2).'&';
                    }
                } else {
                    $querystring .= urlencode($key).'='.urlencode($val).'&';
                }
            }
            $querystring = substr($querystring, 0, -1); // Eliminate unnecessary &
        } else {
            $querystring = $data;
        }

       // echo $querystring;
        curl_setopt ($ch, CURLOPT_URL, $URL); //發貼地址
        //設置HEADER頭部信息
//        if($headers!=""){
//            curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers);
//        }else {
//            curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Content-type: text/json'));
//        }
        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);//反饋信息
        curl_setopt ($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); //http 1.1版本

        curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT_MS, $connttime);//連接等待時間
        curl_setopt ($ch, CURLOPT_TIMEOUT_MS, $timeout);//超時時間

        switch ($type){
            case "GET" : curl_setopt($ch, CURLOPT_HTTPGET, true);break;
            case "POST": curl_setopt($ch, CURLOPT_POST,true);
                curl_setopt($ch, CURLOPT_POSTFIELDS,$querystring);break;
            case "PUT" : curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "PUT");
                curl_setopt($ch, CURLOPT_POSTFIELDS,$querystring);break;
            case "DELETE":curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
                curl_setopt($ch, CURLOPT_POSTFIELDS,$querystring);break;
        }
        $file_contents = curl_exec($ch);//獲得返回值
       // echo time().'<br>';
        $status = curl_getinfo($ch);
        //dump($status);
        curl_close($ch);
        if($data_type=="json"||$data_type=="JSON")
        {
            return json_encode($file_contents);
        }else
        {
            return $file_contents;
        }


    }


發佈了44 篇原創文章 · 獲贊 59 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章