curl是乙個非常強大的開源庫,支援很多協議,包括http、ftp、telnet等,我們使用它來傳送http請求。它給我們帶來的好處是可以通過靈活的選項設定不同的http協議引數,並且支援https。curl可以根據url字首是「http」 還是「https」自動選擇是否加密傳送內容。
使用curl的php擴充套件完成乙個http請求的傳送一般有以下幾個步驟:
初始化連線控制代碼;
設定curl選項;
執行並獲取結果;
釋放vurl連線控制代碼。
下面的程式片段是使用curl傳送http的典型過程
//上述**中使用到了四個函式1. 初始化
$ch =curl_init(); //
2. 設定選項,包括url
curl_setopt($ch,curlopt_url,"");
curl_setopt(
$ch,curlopt_returntransfer,1);
curl_setopt(
$ch,curlopt_header,0); //
3. 執行並獲取html文件內容
$output = curl_exec($ch);
if($output === false)
//4. 釋放curl控制代碼
curl_close($ch);
curl的選項還有很多,可以到php的官方**(上檢視curl支援的所有選項列表。
在curl_exec()函式執行之後,可以使用curl_getinfo()函式獲取curl請求輸出的相關資訊,示例**如下:
curl_exec($ch上述**中curl_getinfo返回的是乙個關聯陣列,包含以下資料:);$info = curl_getinfo($sh
);echo ' 獲取 '.$info['url'].'耗時'.$info['total_time'].'秒';
curl_getinfo()函式還有乙個可選擇引數$opt,通過這個引數可以設定一些常量,對應到上術這個字段,如果設定了第二個引數,那麼返回的只有指定的資訊。例如設定$opt為curlinfo_total_time,則curl_getinfo()函式只返回total_time,即總傳輸消耗的時間,在只需要關注某些傳輸資訊時,設定$opt引數很有意義。
如何使用curl來傳送get請求,傳送get請求的關鍵是拼裝格式正確的url。請求位址和get資料由乙個「?」分割,然後get變數的名稱和值用「=」分隔,各個get名稱和值由「&」連線。php為我們提供了乙個函式專門用來拼裝get請求和資料部分——http_build_query,該函式接受乙個關聯陣列,返回由該關聯資料描述的get請求字串。使用這個函式,結合curl傳送http請求的一般流程,我們封裝了乙個傳送get請求的函式——docurlgetrequest,具體**如下:
**這個函式把使用http_build_query 拼裝好的帶get引數的url傳給curl_init函式,然後使用curl傳送http請求。*@desc 封裝curl的呼叫介面,get的請求方式。
);}
可以使用curl提供的選項curlopt_postfields,設定該選項為post字串資料就可以把請求放在正文中。同樣我們實現了乙個傳送post請求的函式——docurlpostrequest,**如下:
/*上面**中除了設定curlopt_postfields外,我們還設定了curl_post為true,標識這個請求是乙個post請求。在post請求中也是可以傳輸get資料的,只需要在url中拼裝get請求資料即可。*** @desc 封裝 curl 的呼叫介面,post的請求方式**/
function docurlpostrequest($url,$requeststring,$timeout = 5)
$con = curl_init((string)$url
); curl_setopt(
$con, curlopt_header, false
); curl_setopt(
$con, curlopt_postfields, $requeststring
); curl_setopt(
$con, curlopt_post,true
); curl_setopt(
$con, curlopt_returntransfer,true
); curl_setopt(
$con, curlopt_timeout,(int)$timeout);
return curl_exec($con
); }
PHP使用CURL詳解
curl是乙個非常強大的開源庫,支援很多協議,包括http ftp telnet等,我們使用它來傳送http請求。它給我 們帶來的好處是可以通過靈活的選項設定不同的http協議引數,並且支援https。curl可以根據url字首是 http 還是 https 自動選擇是否加密傳送內容。使用curl的...
PHP使用CURL詳解
curl是乙個非常強大的開源庫,支援很多協議,包括http ftp telnet等,我們使用它來傳送http請求。它給我 們帶來的好處是可以通過靈活的選項設定不同的http協議引數,並且支援https。curl可以根據url字首是 http 還是 https 自動選擇是否加密傳送內容。使用curl的...
PHP使用CURL詳解
curl是乙個非常強大的開源庫,支援很多協議,包括http ftp telnet等,我們使用它來傳送http請求。它給我 們帶來的好處是可以通過靈活的選項設定不同的http協議引數,並且支援https。curl可以根據url字首是 http 還是 https 自動選擇是否加密傳送內容。使用curl的...