轉自黎明互聯:使用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); //執行
}