十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
今天小編給大家分享的是PHP的curl功能擴(kuò)展如何使用,很多人都不太了解,今天小編為了讓大家更加了解PHP的curl功能擴(kuò)展,所以給大家總結(jié)了以下內(nèi)容,一起往下看吧。一定會(huì)有所收獲的哦。
PHP的curl功能提供了很多函數(shù),需要將這些函數(shù)按特定的步驟組合到一起,我們先來(lái)了解下PHP建立curl請(qǐng)求的基本步驟。
$ch = curl_init(); // 創(chuàng)建一個(gè)新的CURL資源賦給變量$ch curl_setopt($ch, CURLOPT_URL, $url); // 設(shè)置URL $response = curl_exec($ch); // 執(zhí)行,獲取URL并輸出到瀏覽器 curl_close($ch); // 釋放資源
如果我們希望獲取內(nèi)容但不輸出,可以使用 CURLOPT_RETURNTRANSFER 參數(shù),并設(shè)置其值為非0或者true值。
代碼如下:
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
我們可以通設(shè)置函數(shù)curl_setopt()的不同參數(shù),可以獲得不同的結(jié)果,這也是CURL擴(kuò)展的強(qiáng)大之處。curl_setopt()函數(shù)的常用參數(shù)選項(xiàng)具體可查閱官方文檔,此處就不列舉。
下面是我常用的curl get和post請(qǐng)求的方法:
get請(qǐng)求:
public function httpGet(string $url = '') { // 記錄請(qǐng)求信息的日志 // todo try { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 60); //https 請(qǐng)求 if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); } $response = curl_exec($ch); $errorCode = curl_errno($ch); curl_close($ch); if (!empty($errorCode)) { // 可記錄錯(cuò)誤碼日志 return null; } // 記錄返回結(jié)果日志 return $response; } catch (\Exception $e) { $errorLog = [ 'msg' => $e->getMessage(), 'trace' => $e->getTraceAsString(), 'data' => [ 'url' => $url, ] ]; // 記錄錯(cuò)誤日志 return null; } } ```php
POST請(qǐng)求:
public function httpPost(string $url = '', array $data = []) { // 記錄請(qǐng)求信息的日志 // todo try { $jsonData = json_encode($data); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $jsonData); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_TIMEOUT, 60); curl_setopt($curl, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json; charset=utf-8', 'Content-Length:' . strlen($jsonData) ]); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //https 請(qǐng)求 if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); } $result = curl_exec($curl); $errorCode = curl_errno($curl); curl_close($curl); if (!empty($errorCode)) { // 可記錄錯(cuò)誤碼日志 return null; } // 記錄返回結(jié)果日志 return json_decode($result, true); } catch (\Exception $e) { $errorData = [ 'msg' => $e->getMessage(), 'trace' => $e->getTraceAsString(), 'data' => [ 'url' => $url, 'postData' => $data ] ]; // 記錄錯(cuò)誤日志 return null; } }
關(guān)于PHP的curl功能擴(kuò)展如何使用就分享到這里了,當(dāng)然并不止以上和大家分析的辦法,不過(guò)小編可以保證其準(zhǔn)確性是絕對(duì)沒(méi)問(wèn)題的。希望以上內(nèi)容可以對(duì)大家有一定的參考價(jià)值,可以學(xué)以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。