php curl使用總結(一)

今天和第三方支付作對接的時候,在本地用wamp(php版本5.4.14)運行他們的支付demo的時候,報了一個錯誤。loadXML函數中不能傳空值。排查代碼的時候,發現他們用了curl,我之前也接觸過curl,可是並無很深的研究只知道他是一種模擬瀏覽器傳輸數據的工具。藉着這個機會把curl好好的研究一下。php

一、curl是什麼html

百度百科給的解釋是:數據傳輸神器。那它神器在什麼地方那,經過查找資料得出curl可使用url的語法模擬瀏覽器來傳輸數據,由於是模擬瀏覽器因此它支持多種的網絡協議。目前支持http、https、ftp、gophertelnet、dict、file和ldap協議。libcurl同時也支持HTTPS認證、HTTP POST、HTTP PUT、 FTP 上傳(這個也能經過PHP的FTP擴展完成)、HTTP 基於表單的上傳、代理、cookies和用戶名+密碼的認證。數組

php中使用最多的是經過curl來模擬get和post請求。瀏覽器

 

二、如何使用curl服務器

(1)、要想使用curl,第一步先要在php中開啓curl,在php配置文件php.ini中找到extension=php_curl.dll,把前面的‘;’去掉。重啓服務器。在php代碼中用phpinfo()打印,發現圖中curl說明開啓成功。cookie

(2)、使用curl完成簡單的請求主要分爲四大步:網絡

1).初始化,建立一個新的curl資源。curl

2).設置url和相應的選項函數

3).抓取url並把他傳遞給瀏覽器工具

4).關閉curl資源。把資源釋放。

 1         $MyAES = new MyAES();
 2         $jiaRes = $MyAES->desEncryptStr($data,"1102130405061708");
 3         $header[] = "Content-type: text/xml;charset=UTF-8";
 4         $ch = curl_init();
 5         curl_setopt($ch, CURLOPT_URL,REURL);
 6         curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
 7         curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
 8         curl_setopt($ch, CURLOPT_POST, true);
 9         curl_setopt($ch, CURLOPT_POSTFIELDS, $jiaRes);
10         $aa = curl_exec($ch);
11         // grab URL, and print    
12         if(curl_errno($ch)){
13             print curl_error($ch);
14         }
15         curl_close($ch);    

貼上項目一段代碼,好好的分析一下。

curl_init這個是初始化,建立一個新的curl資源。
curl_setopt這個是php的函數。設置一個curl傳輸選項。
根據php手冊對curl_setopt這個函數說明一下,這個函數須要傳三個參數,第一個是curl句柄(個人理解就是那個建立的curl資源)。第二個是須要設置的curlopt_XX選項。第三個參數就是選項對應的值。

curl_exec函數是執行curl會話。這個函數是初始化一個curl而且所有的選項都設置以後再調用。
成功時返回 , 或者在失敗時返回 。 然而,若是 選項被設置,函數執行成功時會返回執行的結果,失敗時返回 。 

CURLOPT_URL 須要獲取的url地址 CURLOPT_RETURNTRANSFER 將curl_exec()獲取的信息以文件流的形式返回,而不是直接輸出。
TRUEFALSECURLOPT_RETURNTRANSFERFALSE
CURLOPT_HTTPHEADER  一個用來設置HTTP頭字段的數組。使用以下的形式的數組進行設置: array('Content-type: text/plain', 'Content-length: 100') 
CURLOPT_POST 啓用時會發送一個常規的POST請求     CURLOPT_POSTFIELDS  所有數據以http協議中post方式發送。

 跟多curlopt對應的設置請查看php文檔 http://php.net/manual/zh/book.curl.php

特地說明一下curl_setopt_array — 爲 cURL 傳輸會話批量設置選項
使用案例爲
 1 <?php
 2 // 建立一個新cURL資源
 3 $ch = curl_init();
 4 
 5 // 設置URL和相應的選項
 6 $options = array(CURLOPT_URL => 'http://www.example.com/',
 7                  CURLOPT_HEADER => false
 8                 );
 9 
10 curl_setopt_array($ch, $options);
11 
12 // 抓取URL並把它傳遞給瀏覽器
13 curl_exec($ch);
14 
15 // 關閉cURL資源,而且釋放系統資源
16 curl_close($ch);
17 ?>

curl是很強大的,例如,咱們只想把獲取到的內容輸入到文件,而不是直接輸出給瀏覽器,咱們就可使用CURLOPT_RETURNTRANSFER選項!這樣在curl執行的時候,就會把頁面的內容輸出到文件當中,咱們就能夠完成採集等功能啦!效率方面,curl的原理是模擬瀏覽器的操做,它的效率要比file_get_contents()高出四倍以上,試想一下,咱們要採集一個信息量特別龐大的站,運行效率的差異可想而知!不僅僅是效率上,穩定性上來講,curl也遠比file_get_contents()函數要好不少!這就是強大的curl,下文將給你們詳細介紹它的高級應用,咱們能夠模擬瀏覽器的post傳值,甚至上傳!

相關文章
相關標籤/搜索