PHP的cURL庫是一種面向網(wǎng)絡(luò)通訊的開源工具。它提供了一種方便的方式,幫助您在PHP應(yīng)用程序中收發(fā)數(shù)據(jù)。盡管cURL的功能很多,但是在本篇文章中,我們將專注于了解和學(xué)習(xí)基礎(chǔ)概念。
在開始使用cURL之前,需要先對(duì)一些重要的基礎(chǔ)設(shè)置進(jìn)行了解,這樣才能更好地使用該庫。例如,在使用cURL時(shí)你可能會(huì)遇到SSL證書錯(cuò)誤,需要關(guān)閉驗(yàn)證。使用以下代碼片段可以輕松完成此操作。
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
在此之后,我們可以使用cURL來發(fā)送HTTP請(qǐng)求。例如,在以下代碼中,我們使用cURL從指定的網(wǎng)址中獲取數(shù)據(jù)。
$curl_handle = curl_init(); curl_setopt($curl_handle, CURLOPT_URL, 'http://www.example.com/'); curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 3); $buffer = curl_exec($curl_handle); curl_close($curl_handle); if (empty($buffer)){ print "Nothing returned from URL."; } else{ print $buffer; }
該代碼使用了curl_init()函數(shù)來初始化cURL,然后使用curl_setopt()函數(shù)設(shè)置URL、設(shè)置返回值和設(shè)置連接超時(shí)時(shí)間。最后,我們使用curl_exec()函數(shù)執(zhí)行請(qǐng)求并獲得響應(yīng)數(shù)據(jù),最后匯總。
上面的例子測(cè)試了一個(gè)網(wǎng)站,但是我們也可以向任何地方發(fā)送數(shù)據(jù)并接收它們。例如,如果我們要通過POST方法從網(wǎng)站上提交表單數(shù)據(jù),我們可以使用以下代碼:
$curl_handle = curl_init(); curl_setopt($curl_handle, CURLOPT_URL, $targetURL); curl_setopt($curl_handle, CURLOPT_POST, true); curl_setopt($curl_handle, CURLOPT_POSTFIELDS, http_build_query($requestData)); curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true); $buffer = curl_exec($curl_handle); curl_close($curl_handle);
該代碼使用cURL來提交HTTP表單數(shù)據(jù)。其中,http_build_query()函數(shù)將關(guān)聯(lián)數(shù)組轉(zhuǎn)換為URL編碼的字符串, curl_setopt()函數(shù)將數(shù)據(jù)提交到$targetURL中。
有時(shí)候,需要使用cURL來顯式設(shè)置HTTP頭。我們可以使用如下代碼來實(shí)現(xiàn):
$curl_handle = curl_init(); curl_setopt($curl_handle, CURLOPT_URL, $targetURL); curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl_handle, CURLOPT_HEADER, 1); curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array( 'Authorization: Bearer '.$accessToken, 'Content-Type: application/json', 'User-Agent: MyApp' )); $buffer = curl_exec($curl_handle); curl_close($curl_handle); list($headers, $content) = explode("\r\n\r\n", $buffer, 2); $content = json_decode($content, true);
使用了$cURL來向$v3EndPoint發(fā)送HTTP頭信息。其中,curl_setopt()設(shè)置了請(qǐng)求頭,如授權(quán)、內(nèi)容類型和用戶代理。接下來,請(qǐng)求的內(nèi)容會(huì)被寫入$headers和$content中。
當(dāng)然,此外,還有其他設(shè)置和用法,本文介紹了其中最基本的操作。在使用cURL時(shí),為了提高效率,您應(yīng)該嘗試了解和使用更多高級(jí)設(shè)置。