PHP Curl 是一種常用的網絡請求工具,它可以發送 HTTP 請求到遠程服務器,獲取返回結果。今天我們來詳細了解一下 PHP Curl 的使用方法,包括如何發送 GET/POST 請求、如何設置請求頭、如何使用 Cookie 等等。
首先,我們看一下如何使用 PHP Curl 發送 GET 請求。以百度為例,代碼如下:
$url = "http://www.baidu.com"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $res = curl_exec($ch); curl_close($ch); echo $res;
上面的代碼中,我們首先定義了一個字符串變量 $url,它存儲了我們要請求的網站 URL。然后,我們使用 curl_init() 函數初始化一個 Curl 實例,使用 curl_setopt() 函數設置請求參數,發送 HTTP 請求,關閉 Curl 實例,最后輸出獲取到的結果。
接下來,我們看一下如何使用 PHP Curl 發送 POST 請求。以 GitHub API 為例,代碼如下:
$url = "https://api.github.com/user/repos"; $data = array( "name" =>"test", "description" =>"test repository", "private" =>false ); $headers = array( "Content-Type: application/json", "Authorization: token xxx" ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $res = curl_exec($ch); curl_close($ch); echo $res;
上面的代碼中,我們首先定義了一個字符串變量 $url,它存儲了我們要請求的 API 地址。然后,我們定義了一個關聯數組 $data,它存儲了我們要發送的數據。我們還定義了一個數組 $headers,它存儲了我們要發送的請求頭。接著,我們使用 curl_setopt() 函數設置請求參數,發送 HTTP 請求,關閉 Curl 實例,最后輸出獲取到的結果。
除了可以發送 GET/POST 請求以外,PHP Curl 還支持一些其他的功能,比如設置請求頭、設置請求超時、設置 User-Agent、使用 Cookie 等等。以設置請求頭為例,代碼如下:
$url = "http://www.baidu.com"; $headers = array( "User-Agent: Mozilla/5.0", "Referer: http://www.baidu.com" ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $res = curl_exec($ch); curl_close($ch); echo $res;
上面的代碼中,我們定義了一個數組 $headers,它存儲了我們要發送的請求頭。然后,我們使用 curl_setopt() 函數設置請求參數,發送 HTTP 請求,關閉 Curl 實例,最后輸出獲取到的結果。
最后,我們來看一下 PHP Curl 如何使用 Cookie。以 GitHub 登錄為例,代碼如下:
$url = "https://github.com/session"; $data = array( "login" =>"username", "password" =>"password" ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); curl_exec($ch); curl_close($ch); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://github.com/"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); $res = curl_exec($ch); curl_close($ch); echo $res;
上面的代碼中,我們首先定義了一個字符串變量 $url,它存儲了登錄地址。然后,我們定義了一個關聯數組 $data,它存儲了登錄所需的用戶名和密碼。接著,我們使用 curl_setopt() 函數設置請求參數,并使用 CURLOPT_COOKIEJAR 選項將 Cookie 保存到文件中。我們只需要執行這個請求,無需輸出結果。最后,我們再次初始化一個 Curl 實例,使用 CURLOPT_COOKIEFILE 選項將之前保存的 Cookie 文件讀取到請求中,發送請求得到結果并輸出。
以上幾個例子展示了 PHP Curl 的常用功能,通過 PHP Curl,我們可以快速、靈活地向遠程服務器發送請求,完成各種任務。