使用CURL實現GET和POST方式請求

轉自黎明互聯:使用CURL實現GET和POST方式請求.

CURL請求,支持GET和POST兩種方式,默認爲GET方式,如果傳第二個參數則爲POST方式請求,設置了超時時間,避免程序卡死。

/**
  使用curl方式實現get或post請求
  @param $url 請求的url地址
  @param $data 發送的post數據 如果爲空則爲get方式請求
  return 請求後獲取到的數據
*/
function curlRequest($url,$data = ''){
        $ch = curl_init();
        $params[CURLOPT_URL] = $url;    //請求url地址
        $params[CURLOPT_HEADER] = false; //是否返回響應頭信息
        $params[CURLOPT_RETURNTRANSFER] = true; //是否將結果返回
        $params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向
		$params[CURLOPT_TIMEOUT] = 30; //超時時間
		if(!empty($data)){
			$params[CURLOPT_POST] = true;
			$params[CURLOPT_POSTFIELDS] = $data;
        }
		$params[CURLOPT_SSL_VERIFYPEER] = false;//請求https時設置,還有其他解決方案
		$params[CURLOPT_SSL_VERIFYHOST] = false;//請求https時,其他方案查看其他博文
        curl_setopt_array($ch, $params); //傳入curl參數
        $content = curl_exec($ch); //執行
        curl_close($ch); //關閉連接
		return $content;
}

對於某些服務器可能會遇到不兼容的情況,需要將數據拼裝成字符串進行發送,可以使用如下函數:

function getPost($url,$vars){

        $ch = curl_init();
        $params[CURLOPT_URL] = $url;    //請求url地址
        $params[CURLOPT_HEADER] = false; //是否返回響應頭信息
        $params[CURLOPT_RETURNTRANSFER] = true; //是否將結果返回
        $params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向
        $params[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1';
 
        $postfields = '';
        foreach ($vars as $key => $value){
            $postfields .= urlencode($key) . '=' . urlencode($value) . '&';  
        } 
        $params[CURLOPT_POST] = true;
        $params[CURLOPT_POSTFIELDS] = $postfields;

        //解決方案一 禁用證書驗證
		$params[CURLOPT_SSL_VERIFYPEER] = false;
		$params[CURLOPT_SSL_VERIFYHOST] = false;

        curl_setopt_array($ch, $params); //傳入curl參數
        return  curl_exec($ch); //執行
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章