php中curl使用指南
許多同學(xué)在第一次使用curl的時(shí)候感覺(jué)一個(gè)頭兩個(gè)大(包括我在內(nèi)),看著這一條條的curl_setopt函數(shù)完全摸不著頭腦,不過(guò)在你花10分鐘看了我的介紹后相信你以后也能輕松戲耍php的curl了
首先,請(qǐng)看一個(gè)curl代碼(花10秒鐘,略看一遍,然后跳到后文)
<?php
$data = "<soap:Envelope>[...]</soap:Envelope>";
$tuCurl = curl_init();
curl_setopt($tuCurl, CURLOPT_URL, " curl_setopt($tuCurl, CURLOPT_PORT , 443);
curl_setopt($tuCurl, CURLOPT_VERBOSE, 0);
curl_setopt($tuCurl, CURLOPT_HEADER, 0);
curl_setopt($tuCurl, CURLOPT_SSLVERSION, 3);
curl_setopt($tuCurl, CURLOPT_SSLCERT, getcwd() . "/client.pem");
curl_setopt($tuCurl, CURLOPT_SSLKEY, getcwd() . "/keyout.pem");
curl_setopt($tuCurl, CURLOPT_CAINFO, getcwd() . "/ca.pem");
curl_setopt($tuCurl, CURLOPT_POST, 1);
curl_setopt($tuCurl, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($tuCurl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($tuCurl, CURLOPT_POSTFIELDS, $data);
curl_setopt($tuCurl, CURLOPT_HTTPHEADER, array("Content-Type: text/xml","SOAPAction: \"/soap/action/query\"", "Content-length: ".strlen($data)));
$tuData = curl_exec($tuCurl);
if(!curl_errno($tuCurl)){
$info = curl_getinfo($tuCurl);
echo 'Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url'];
} else {
echo 'Curl error: ' . curl_error($tuCurl);
}
curl_close($tuCurl);
echo $tuData;
?>
WTF,這到底是在做什么?
想要學(xué)會(huì)這種“高端”的用法嗎?
首先,相信你肯定知道網(wǎng)址大部分是由http開(kāi)頭的,那是因?yàn)樗麄冃栌猛ㄟ^(guò)http(超文本傳送協(xié)議 HTTP-Hypertext transfer protocol)來(lái)進(jìn)行數(shù)據(jù)傳輸,但是傳輸數(shù)據(jù)不是簡(jiǎn)單的將一句"Hello"傳到服務(wù)器上就搞定的事情,發(fā)送者為了方便接受者理解發(fā)送者的實(shí)際意圖以及知道發(fā)送人到底是何許人也,發(fā)送者往往要將許多額外信息一并發(fā)給接受者,就像寄信人需要在信件外套一個(gè)信封一樣,信封上寫(xiě)著各種發(fā)信人的信息。所有的這些最終合并成了一個(gè)叫做報(bào)文(message)的玩意,也就構(gòu)成了整個(gè)互聯(lián)網(wǎng)的基礎(chǔ)。
curl的工作就是通過(guò)http協(xié)議發(fā)送這些message (php的libcurl目前還支持https、ftp、telnet等其他協(xié)議)
現(xiàn)在再看代碼,實(shí)際上代碼只做了五件事情
curl_init()初始化curl
curl_setopt()設(shè)置傳輸數(shù)據(jù)和參數(shù)
curl_exec()執(zhí)行傳輸并獲取返回?cái)?shù)據(jù)
curl_errono()返回錯(cuò)誤碼
curl_close()關(guān)閉curl
下面給出使用GET和POST方法如何抓取和提交任意頁(yè)面的數(shù)據(jù)
<?php
//初始化
$curl = curl_init();
//設(shè)置url
curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
//設(shè)置返回獲取的輸出為文本流
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
//執(zhí)行命令
$data = curl_exec($curl);
//關(guān)閉URL請(qǐng)求
curl_close($curl);
//顯示獲得的數(shù)據(jù)
print_r($data);
?>
<?php
//初始化
$curl = curl_init();
//設(shè)置url
curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
//設(shè)置返回獲取的輸出為文本流
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
//設(shè)置post方式提交
curl_setopt($curl, CURLOPT_POST, 1);
//設(shè)置post數(shù)據(jù)
curl_setopt($curl, CURLOPT_POSTFIELDS, array("data"=>"value");
//執(zhí)行命令
$data = curl_exec($curl);
//關(guān)閉URL請(qǐng)求
curl_close($curl);
//打印數(shù)據(jù)
print_r($data);
?>
感興趣的同學(xué)還可以參考php官方文檔,學(xué)習(xí)更多curl用法
相關(guān)文章
PHP中使用匿名函數(shù)操作數(shù)據(jù)庫(kù)的例子
這篇文章主要介紹了PHP中使用匿名函數(shù)操作數(shù)據(jù)庫(kù)的例子,本文直接給出類(lèi)的代碼、使用例子、繼承例子,需要的朋友可以參考下2014-11-11PHP中把有符號(hào)整型轉(zhuǎn)換為無(wú)符號(hào)整型方法
這篇文章主要介紹了PHP中把有符號(hào)整型轉(zhuǎn)換為無(wú)符號(hào)整型方法,轉(zhuǎn)換的方法很簡(jiǎn)單,本文直接給出轉(zhuǎn)換方法,需要的朋友可以參考下2015-05-05Laravel Memcached緩存驅(qū)動(dòng)的配置與應(yīng)用方法分析
這篇文章主要介紹了Laravel Memcached緩存驅(qū)動(dòng)的配置與應(yīng)用方法,結(jié)合實(shí)例形式分析了在Laravel框架配置Memcached緩存及相關(guān)使用方法,需要的朋友可以參考下2016-10-10