php curl使用總結(一)

來源:互聯網
上載者:User

標籤:詳細   charset   今天   http   支付   img   技術分享   案例   認證   

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

1、curl是什麼

百度百科給的解釋是:資料轉送神器。那它神器在什麼地方那,通過尋找資料得出curl可以使用url的文法類比瀏覽器來傳輸資料,因為是類比瀏覽器所以它支援多種的網路通訊協定。目前支援http、https、ftp、gopher、telnet、dict、file和ldap協議。libcurl同時也支援HTTPS認證、HTTP POST、HTTP PUT、 FTP 上傳(這個也能通過PHP的FTP擴充完成)、HTTP 基於表單的上傳、代理、cookies和使用者名稱+密碼的認證。

php中使用最多的是通過curl來類比get和post請求。

 

2、如何使用curl

(1)、要想使用curl,第一步先要在php中開啟curl,在php設定檔php.ini中找到extension=php_curl.dll,把前面的‘;’去掉。重啟伺服器。在php代碼中用phpinfo()列印,發現圖中curl說明開啟成功。

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

1).初始化,建立一個新的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並且全部的選項都設定之後再調用。
成功時返回 TRUE, 或者在失敗時返回 FALSE。 然而,如果 CURLOPT_RETURNTRANSFER選項被設定,函數執行成功時會返回執行的結果,失敗時返回 FALSE 。 

CURLOPT_URL 需要擷取的url地址 CURLOPT_RETURNTRANSFER 將curl_exec()擷取的資訊以檔案流的形式返回,而不是直接輸出。
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傳值,甚至上傳!

php curl使用總結(一)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.