微博公眾號、QQ公眾號、地圖和很多的第三方功能提供都是採用http 的API(應用程式)形式向開發人員提供的功能。那麼,如何請求、地圖等第三方API呢?這個時候就需要使用到cURL,本文就來給大家介紹一下php curl庫的應用。
cURL中文翻譯過來叫做基於URL的函數庫。它的主要功能是:使用相關的函數類比協議請求。
例如:
類比表單向某個地址發送資料
在無驗證碼的情況下類比表單完成使用者登陸
上傳某個檔案到遠程伺服器
請求遠程伺服器提供的某些功能
... ...
curl支援dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtmp, rtsp, smtp, smtps, telnet和tftp協議。
curl同時也支援HTTPS認證、HTTP的POST、HTT的PPUT、FTP上傳(這個也能通過PHP的FTP擴充完成)、HTTP基於表單的上傳、代理、cookies和使用者名稱+密碼的認證。
一、初使化curl資源
這隻有一句話,就是使用的是curl_init函數。這個參數法面要傳入任何參數。返回curl的操作資源。
因為,我們在後面是通過curl_setopt向curl的操作資源變數壓入資料的。
例:
$ch = curl_init();
二、參數佈建要求的協議地址
curl_setopt函數的詳細使用如下:
類型 |
說明 |
函數 |
curl_setopt |
參數1 |
curl資源變數 |
參數2 |
curl參數選項 |
參數3 |
curl參數值 |
CURLOPT_URL 這個參數選項規定了請求的url地址。
curl_setopt($ch, CURLOPT_URL, "http://www.php.cn");
三、參數設定是否返回請求結果
我們希望curl請求後返回對應的結果。我們要得到對應的結果,也需要設定一個參數,這個參數名為:CURLOPT_RETURNTRANSFER。
若需要傳回值即為1。不需請求後返回的結果可設定為0。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
四、設定發送資料
如果是get請求,我們不需要設定發送的參數。在post等請求的時候,我們需要設定發送方法為post方法。並設定發送的資料。
*CURLOPT_POST *值設為1是使用POST方法,0為不使用POST方法
CURLOPT_POSTFIELDS設定傳遞的資料
//聲明使用POST方式來進行發送 curl_setopt($ch, CURLOPT_POST, 1);//發送什麼資料呢curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
五、其他的參數資訊設定
如果是https有的時候我們需要忽略https的安全性憑證。
CURLOPT_SSL_VERIFYPEER和CURLOPT_SSL_VERIFYHOST 兩個參數改為false即忽略了認證。
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
CURLOPT_HEADER這個參數又決定是是否處理http的頭資訊,我們不想接收處理的話可將這個值設定為0。
curl_setopt($ch, CURLOPT_HEADER, 0);
此外,我們還可以佈建要求的逾時時間,參數為:CURLOPT_TIMEOUT。
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
其他參數非常多,有需要可以訪問www.php.cn
六、執行或執行php curl擷取返回結果
我們第三步中,將CURLOPT_RETURNTRANSFER 參數中將值設為1。如果執行的結果有資料。使用curl_exec執行後,會將結果返回給$output變數。
$output = curl_exec($ch);
七、關閉curl資源
關閉curl資源。因為資源類型,我們反覆強調過,有開啟就有關閉。
如果不需要使用,使用curl_close關閉後立刻釋放記憶體。
curl_close($ch);
八丶將上面的組合在一起
<?php//初始化$ch = curl_init();//設定選項,包括URLcurl_setopt($ch, CURLOPT_URL, "http://www.php.cn");curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_HEADER, 0);//執行並擷取HTML文檔內容$output = curl_exec($ch);//釋放curl控制代碼curl_close($ch);//列印獲得的資料print_r($output);?>