《PHP實例:php中curl使用指南》要點:
本文介紹了PHP實例:php中curl使用指南,希望對您有用。如果有疑問,可以聯系我們。
許多同學在第一次使用curl的時候感覺一個頭兩個大(包括我在內),看著這一條條的curl_setopt函數完全摸不著頭腦,不過在你花10分鐘看了我的介紹后相信你以后也能輕松戲耍php的curl了PHP應用
首先,請看一個curl代碼(花10秒鐘,略看一遍,然后跳到后文)PHP應用
代碼如下:
<?php
$data = "<soap:Envelope>[...]</soap:Envelope>";
$tuCurl = curl_init();
curl_setopt($tuCurl, CURLOPT_URL, "https://example.com/path/for/soap/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,這到底是在做什么?PHP應用
想要學會這種“高端”的用法嗎?PHP應用
首先,相信你肯定知道網址大部分是由http開頭的,那是因為他們需用通過http(超文本傳送協議 HTTP-Hypertext transfer protocol)來進行數據傳輸,但是傳輸數據不是簡單的將一句"Hello"傳到服務器上就搞定的事情,發送者為了方便接受者理解發送者的實際意圖以及知道發送人到底是何許人也,發送者往往要將許多額外信息一并發給接受者,就像寄信人需要在信件外套一個信封一樣,信封上寫著各種發信人的信息.所有的這些最終合并成了一個叫做報文(message)的玩意,也就構成了整個互聯網的基礎.PHP應用
PHP應用
curl的工作就是通過http協議發送這些message (php的libcurl目前還支持https、ftp、telnet等其他協議)PHP應用
現在再看代碼,實際上代碼只做了五件事情PHP應用
curl_init()初始化curl
curl_setopt()設置傳輸數據和參數
curl_exec()執行傳輸并獲取返回數據
curl_errono()返回錯誤碼
curl_close()關閉curl
下面給出使用GET和POST方法如何抓取和提交任意頁面的數據PHP應用
代碼如下:
<?php
??? //初始化
??? $curl = curl_init();
??? //設置url
??? curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
??? //設置返回獲取的輸出為文本流
??? curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
??? //執行命令
??? $data = curl_exec($curl);
??? //關閉URL哀求
??? curl_close($curl);
??? //顯示獲得的數據
??? print_r($data);
?>
<?php
??? //初始化
??? $curl = curl_init();
??? //設置url
??? curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
??? //設置返回獲取的輸出為文本流
??? curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
??? //設置post方式提交
??? curl_setopt($curl, CURLOPT_POST, 1);
??? //設置post數據
??? curl_setopt($curl, CURLOPT_POSTFIELDS, array("data"=>"value");
??? //執行命令
??? $data = curl_exec($curl);
??? //關閉URL哀求
??? curl_close($curl);
??? //打印數據
??? print_r($data);
?>
感興趣的同學還可以參考php官方文檔,學習更多curl用法PHP應用
維易PHP培訓學院每天發布《PHP實例:php中curl使用指南》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。
轉載請注明本頁網址:
http://www.fzlkiss.com/jiaocheng/12462.html