您好,登錄后才能下訂單哦!
怎么在php項目中實現一個CURL遠程請求?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
cURL
cURL可以使用URL的語法模擬瀏覽器來傳輸數據,因為它是模擬瀏覽器,因此它同樣支持多種協議,FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP等協議都可以很好的支持,包括一些:HTTPS認證,HTTP POST方法,HTTP PUT方法,FTP上傳,keyberos認證,HTTP上傳,代理服務器,cookies,用戶名/密碼認證,下載文件斷點續傳,上傳文件斷點續傳,http代理服務器管道,甚至它還支持IPv6,scoket5代理服務器,通過http代理服務器上傳文件到FTP服務器等等。
GET案例
/** * curl_get * @param $url * @param null $param * @param null $options * @return array */ function curl_get($url,$param = null,$options = null){ if(empty($options)){ $options = array( 'timeout' => 30,// 請求超時 'header' => array(), 'cookie' => '',// cookie字符串,瀏覽器直接復制即可 'cookie_file' => '',// 文件路徑,并要有讀寫權限的 'ssl' => 0,// 是否檢查https協議 'referer' => null ); }else{ empty($options['timeout']) && $options['timeout'] = 30; empty($options['ssl']) && $options['ssl'] = 0; } $result = array( 'code' => 0, 'msg' => 'success', 'body' => '' ); if(is_array($param)){ $param = http_build_query($param); } $url = strstr($url,'?')?trim($url,'&').'&'.$param:$url.'?'.$param; $ch = curl_init(); curl_setopt($ch,CURLOPT_URL, $url);// 設置url !empty($options['header']) && curl_setopt($ch, CURLOPT_HTTPHEADER, $options['header']); // 設置請求頭 if(!empty($options['cookie_file']) && file_exists($options['cookie_file'])){ curl_setopt($ch, CURLOPT_COOKIEFILE, $options['cookie_file']); curl_setopt($ch, CURLOPT_COOKIEJAR, $options['cookie_file']); }else if(!empty($options['cookie'])){ curl_setopt($ch, CURLOPT_COOKIE, $options['cookie']); } curl_setopt($ch, CURLOPT_ENCODING, 'gzip'); //curl解壓gzip頁面內容 curl_setopt($ch, CURLOPT_HEADER, 0);// 不獲取請求頭 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);// 輸出轉移,不輸出頁面 !$options['ssl'] && curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $options['ssl']); // 禁止服務器端的驗證ssl !empty($options['referer']) && curl_setopt($ch, CURLOPT_REFERER, $options['referer']);//偽裝請求來源,繞過防盜 curl_setopt($ch, CURLOPT_TIMEOUT, $options['timeout']); //執行并獲取內容 $output = curl_exec($ch); //對獲取到的內容進行操作 if($output === FALSE ){ $result['code'] = 1; // 錯誤 $result['msg'] = "CURL Error:".curl_error($ch); } $result['body'] = $output; //釋放curl句柄 curl_close($ch); return $result; }
POST案例
/** * curl_post * @param $url 請求地址 * @param null $param get參數 * @param array $options 配置參數 * @return array */ function curl_post($url,$param = null,$options = array()){ if(empty($options)){ $options = array( 'timeout' => 30, 'header' => array(), 'cookie' => '', 'cookie_file' => '', 'ssl' => 0, 'referer' => null ); }else{ empty($options['timeout']) && $options['timeout'] = 30; empty($options['ssl']) && $options['ssl'] = 0; } $result = array( 'code' => 0, 'msg' => 'success', 'body' => '' ); if(is_array($param)){ $param = http_build_query($param); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url);// 設置url !empty($options['header']) && curl_setopt($ch, CURLOPT_HTTPHEADER, $options['header']); // 設置請求頭 if(!empty($options['cookie_file']) && file_exists($options['cookie_file'])){ curl_setopt($ch, CURLOPT_COOKIEFILE, $options['cookie_file']); curl_setopt($ch, CURLOPT_COOKIEJAR, $options['cookie_file']); }else if(!empty($options['cookie'])){ curl_setopt($ch, CURLOPT_COOKIE, $options['cookie']); } curl_setopt($ch, CURLOPT_ENCODING, 'gzip'); //curl解壓gzip頁面內容 curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $param); curl_setopt($ch, CURLOPT_HEADER, 0);// 不獲取請求頭 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);// 輸出轉移,不輸出頁面 !$options['ssl'] && curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $options['ssl']); // 禁止服務器端的驗證ssl !empty($options['referer']) && curl_setopt($ch, CURLOPT_REFERER, $options['referer']);//偽裝請求來源,繞過防盜 curl_setopt($ch, CURLOPT_TIMEOUT, $options['timeout']); //執行并獲取內容 $output = curl_exec($ch); //對獲取到的內容進行操作 if($output === FALSE ){ $result['code'] = 1; // 錯誤 $result['msg'] = "CURL Error:".curl_error($ch); } $result['body'] = $output; //釋放curl句柄 curl_close($ch); return $result; }
關于怎么在php項目中實現一個CURL遠程請求問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。