PHP cURL是使用PHP語言進行HTTP請求的一個功能強大的庫。
PHP cURL基于libcurl庫,可以與FTP、HTTP、HTTPS、SMTP等各種協(xié)議通信,并且PHP cURL可以使用各種協(xié)議,發(fā)送GET、POST、PUT、DELETE等HTTP請求。此外,PHP cURL還可以設置請求超時、HTTP頭信息、證書、Cookie等。
下面通過一些例子來介紹使用PHP cURL,使其更加易于理解。
// 發(fā)送GET請求的例子,請求baidu.com的首頁 $ch = curl_init("http://www.baidu.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $output = curl_exec($ch); curl_close($ch); echo $output;
上面的代碼使用curl_init()初始化一個會話,然后設置請求的URL,進而使用curl_setopt()方法傳遞一些請求參數(shù),包括返回結(jié)果不直接輸出到屏幕(CURLOPT_RETURNTRANSFER),然后使用 curl_exec()執(zhí)行這個請求,最后使用curl_close()關閉會話,每個cURL操作的最后一定要更新cURL資源的狀態(tài)。最后,輸出獲取到的結(jié)果。
// 發(fā)送POST請求的例子,請求httpbin.org/post,上傳一張圖片 $ch = curl_init(); $data = array('file' =>new CURLfile('image.jpg')); curl_setopt($ch, CURLOPT_URL, 'http://httpbin.org/post'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $output = curl_exec($ch); curl_close($ch); echo $output;
上面的代碼使用curl_init()初始化一個會話,然后使用curl_setopt()方法設置目標URL、請求方法是POST,然后設置上傳的文件,最后使用curl_exec()執(zhí)行這個請求。最后,輸出獲取到的結(jié)果。
PHP cURL還可以設置請求超時、Cookie、HTTP頭信息、代理,證書等。以上例子都是動態(tài)的從互聯(lián)網(wǎng)上獲取數(shù)據(jù),PHP cURL也可以使用本地文件、FTP等進行數(shù)據(jù)上傳和下載。
// 下載文件的例子,將httpbin.org/get下載到本地,并重命名為test.txt $ch = curl_init("http://httpbin.org/get"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $output = curl_exec($ch); curl_close($ch); $file = fopen("test.txt", "w"); fwrite($file, $output); fclose($file);
上面的代碼使用curl_init()初始化一個會話,設置目標URL并且不直接將請求響應輸出到屏幕上。然后使用curl_exec()執(zhí)行這個請求,并且將獲取到的內(nèi)容寫入到本地文件test.txt中。
總之,PHP cURL是一個功能強大、使用靈活的HTTP請求庫。通過使用cURL,我們可以動態(tài)的獲取數(shù)據(jù)、上傳和下載文件,以及進行各種HTTP請求操作。不僅如此,在實際的項目中,還可以使用PHP cURL來模擬瀏覽器請求、進行單元測試等。