亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

PHP中的cURL請求及示例學習筆記

2024-05-04 21:47:58
字體:
來源:轉載
供稿:網友

cURL是php中一個很強大的功能,可以模仿各種用戶請求,如模仿用戶登錄,發送php cookie等等操作,使用curl_init函數,必須要打開這個php擴展.

1.打開php.ini,開啟extension=php_curl.dll

2.檢查php.ini的extension_dir值是哪個目錄,檢查有無php_curl.dll,沒有的請下載php_curl.dll,再把php目錄中的libeay32.dll,ssleay32.dll拷到c:/windows/system32里面.

學習騰訊開放平臺API接口的過程中,看到了一個很強大的PHP庫——cURL,它是利用URL語法在命令行方式下工作的文件傳輸工具,這篇文章是博主直接從國外一個博客翻譯過來的,原文地址是:http://codular.com/curl-with-php。這篇文章講的很基礎,但條理很清晰,知識比較系統和全面,所以轉過來收藏了,下面的有些標題是博主畫蛇添足的,大家近乎可以忽略.

1 定義:什么是cURL

cURL允許數據傳輸跨廣泛的協議,是一個非常強大的系統。它廣泛用于跨網站發送數據,包括諸如API交互和oAuth。cURL是在它的應用范圍內幾乎是無所不能的,從基本的HTTP請求,到更為復雜的FTP上傳或封閉式HTTPS網站的交互驗證。讓我們一起來看看發送一個GET和POST請求和處理返回的響應的簡單區別,以及一些重要的參數說明。

在我們通過一個cURL請求做任何事之前,我們首先需要初始化一個cURL的實例。我們可以通過調用函數curl_init()函數實現,它會返回一個cURL資源。該函數接收你想要發送的請求URL作為它的一個參數。在本文中,我們先不做這一步,可以在接下來的過程中用另一種方式來實現它。

2 須知:一些核心設置

一旦我們得到了一個cURL資源,我們可以開始進行一些配置,下面列出我總結的一些核心設置。

CURLOPT_RETURNTRANSFER - 返回響應作為一個字符串,而不是輸出到屏幕

CURLOPT_CONNECTTIMEOUT - 連接超時的時間

CURLOPT_TIMEOUT - cURL執行的超時時間

CURLOPT_USERAGENT - 用于請求的Useragent字符串

CURLOPT_URL - 發送請求的URL對象

CURLOPT_POST - 以POST方式發送一個請求

CURLOPT_POSTFIELDS - 在POST提交的請求中的數組數據

3 創建一個配置

我們可以通過使用curl_setopt()方式創建一個配置,這個方式接受3個參數:cURL資源、設置以及設置對應的值,因此,我們可以如下所示設置我們正在發送的請求URL,代碼如下:

  1. $curl = curl_init(); 
  2. curl_setopt($curl, CURLOPT_URL, 'http://www.49028c.com'); 

如上所示,當獲取cURL資源時,我們可以通過傳送一個參數來設置URL,代碼如下: 

$curl = curl_init('http://www.49028c.com');

當然我們也可以通過給curl_setopt_array()函數傳遞一個包含變量名和變量值的數組一次性地創建多重配置,代碼如下:

  1. $curl = curl_init(); 
  2. curl_setopt_array($curlarray
  3. CURLOPT_RETURNTRANSFER => 1, 
  4. CURLOPT_URL => 'http://www.49028c.com' 
  5. )); 

4 執行請求:curl_exec()

當所有選項都配置好后,準備發送請求時,我們可以通過調用curl_exec()方式來執行這個cURL請求,這個函數將會返回三種不同的情形,代碼如下:

$result = curl_exec($curl);

此時,$result已經包含了頁面的響應——它可能是JSON,一個字符串或者一個完整的網站的HTML.

5 關閉請求:curl_close()

當你發送完一個請求并且獲取到了相應的返回結果,你就需要關閉這個cURL請求以便釋放一些系統資源,通過調用curl_close()方法,我們可以像其它所有需要將資源作為參數的函數一樣簡單實現資源的釋放.

6 GET請求

GET請求是默認的請求方法,并且我們可以很直截了當的使用它,事實上所有的例子到目前為止一直都是GET請求,如果你想在請求中加入傳入一些參數,那么你可以像http://testcURL.com/?item1=value&item2=value2一樣把這些參數作為一個查詢字符串附加在URL地址后面.

因此,我們可以通過如下示例發送一個GET請求到上面的URL中去,并且返回相應的結果,代碼如下:

  1. // Get cURL resource 
  2. $curl = curl_init(); 
  3. // Set some options - we are passing in a useragent too here 
  4. curl_setopt_array($curlarray
  5. CURLOPT_RETURNTRANSFER => 1, 
  6. CURLOPT_URL => 'http://testcURL.com/?item1=value&item2=value2'
  7. CURLOPT_USERAGENT => 'Codular Sample cURL Request' 
  8. )); 
  9. // Send the request & save response to $resp 
  10. $resp = curl_exec($curl); 
  11. // Close request to clear up some resources 
  12. curl_close($curl); 

7 POST請求

GET請求和POST請求兩者之間語法的唯一區別就是:在你想要傳送一些數據時,多了一個設置,我們將把CURLOPT_POST設置為true,并且通過設置CURLOPT_POSTFIELDS來傳送包含一個數組的數據.

因此,如果把上面的GET請求轉換為POST請求,我們可以使用下面的代碼:

  1. // Get cURL resource 
  2. $curl = curl_init(); 
  3. // Set some options - we are passing in a useragent too here 
  4. curl_setopt_array($curlarray
  5. CURLOPT_RETURNTRANSFER => 1, 
  6. CURLOPT_URL => 'http://www.49028c.com'
  7. CURLOPT_USERAGENT => 'Codular Sample cURL Request'
  8. CURLOPT_POST => 1, 
  9. CURLOPT_POSTFIELDS => array
  10. item1 => 'value'
  11. item2 => 'value2' 
  12. )); 
  13. // Send the request & save response to $resp 
  14. $resp = curl_exec($curl); 
  15. // Close request to clear up some resources 
  16. curl_close($curl); 

到這里,你就擁有了這樣的一個POST請求:它將產生和上面GET請求一樣的效果,并且把返回數據到腳本中,這樣你就可以隨便使用它們了.

發起https請求示例,代碼如下:

  1. function _https_curl_post($url$vars)   
  2. {   
  3.     foreach($vars as $key=>$value)  
  4.     {  
  5.         $fields_string .= $key.'='.$value.'&' ;  
  6.     }   
  7.     $fields_string = substr($fields_string,0,(strlen($fields_string)-1)) ;  
  8.     $ch = curl_init();    
  9.     curl_setopt($ch, CURLOPT_URL,$url);   
  10.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,  2);  
  11.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);  // this line makes it work under https  
  12.     curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);  
  13.     curl_setopt($ch, CURLOPT_POST, count($vars) );  
  14.     curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);       
  15.     $data = curl_exec($ch);          
  16.     curl_close($ch);    
  17.          
  18.     if ($data)  
  19.     {  
  20.         return $data;  
  21.     }  
  22.     else 
  23.     {  
  24.         return false;  
  25.     }  

8 錯誤

盡管我們討厭錯誤,但是你還是得注意使用cURL時可能出現的情形,因為你最終無法控制你所發送請求的網站,也無法保證該站點的響應結果將會是你預想的那種方式以及這個站點一直都會是正常狀態.

這里提供了兩個可以用來處理錯誤的函數:

curl_error() - 返回一個字符串錯誤信息(當請求正常返回時,其值為空).

curl_errno() - 返回cURL的錯誤數目,然后你可以查看這個包含錯誤代碼的頁面.

例如,你可以如下示例使用,代碼如下:

  1. if(!curl_exec($curl)){ 
  2. die('Error: "' . curl_error($curl) . '" - Code: ' . curl_errno($curl)); 

如果你想要任何HTTP響應代碼都大于400來產生一個錯誤,而不是返回整個HTML頁面,那么你可以把CURLOPT_FAILONERROR設置為true,cURL是一個“龐然大物”,并且還有很多很多的可能,有些網站可能為一些用戶代理提供服務頁面,當使用API接口時,它們可能會要求你傳送一個特別的用戶代理,這些都是我們需要注意的,如果你還想了解一些cURL請求,為何不嘗試去oAuth with Instagram看看呢?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩国产中文精品字幕自在自线| 国产69精品久久久久99| 国产精品视频成人| 亚洲九九九在线观看| 日韩欧中文字幕| 欧美猛交ⅹxxx乱大交视频| 国产午夜精品全部视频播放| 久久的精品视频| 亚洲xxxx18| 久久久精品久久久| 亚洲网在线观看| 国产成人精品视| 另类视频在线观看| 性欧美亚洲xxxx乳在线观看| 成人国产精品免费视频| 日韩专区中文字幕| 久久精品免费电影| 国产精品美女免费视频| 久久久久久有精品国产| 中文字幕欧美亚洲| 亚洲综合第一页| 亚洲男人天堂网| 萌白酱国产一区二区| 国产在线观看一区二区三区| 海角国产乱辈乱精品视频| 国产精品免费一区二区三区都可以| 欧美日韩国产一区二区| 青青草99啪国产免费| 亚洲欧洲国产精品| 国产在线视频91| 午夜精品一区二区三区在线视| 伊人久久久久久久久久| 久久精品青青大伊人av| 久久精品人人爽| 97精品国产97久久久久久免费| 在线日韩日本国产亚洲| 91在线视频导航| 激情成人在线视频| 国产美女精彩久久| 亚洲欧美日韩中文视频| 欧美日韩一二三四五区| 国产精品久久久久久久9999| 亚洲高清久久网| 久久久精品在线观看| 亚洲无线码在线一区观看| 国产精品亚洲欧美导航| 青草青草久热精品视频在线网站| 日本欧美一二三区| 中文字幕在线亚洲| 久久久久国色av免费观看性色| 福利一区福利二区微拍刺激| 日本久久久久久久久久久| 国产精品视频一区二区高潮| 精品一区精品二区| 久久久久久久久国产精品| 日本欧美精品在线| 91av在线播放视频| 日韩久久免费电影| 国产精品va在线播放我和闺蜜| 欧美一级电影在线| 久久99精品久久久久久噜噜| 91夜夜未满十八勿入爽爽影院| 国产精品 欧美在线| 国产精品mp4| 精品国产乱码久久久久久天美| 久久理论片午夜琪琪电影网| 欧美性极品xxxx娇小| 亚洲女人天堂网| 精品久久久香蕉免费精品视频| 日韩av在线直播| 亚洲日韩欧美视频| 日韩欧美在线网址| 日本久久久久久| 欧美亚洲第一页| 欧美性猛交xxxx乱大交| 国产欧美在线观看| 欧美视频在线视频| 欧美日韩亚洲激情| 国产午夜精品美女视频明星a级| 国产欧美va欧美va香蕉在| 亚洲成人网在线| 欧美性猛交xxxx富婆弯腰| 久久精品99久久久香蕉| 2025国产精品视频| 97不卡在线视频| 91久久中文字幕| 久色乳综合思思在线视频| 国产成人亚洲综合青青| 亚洲激情电影中文字幕| 亚洲精品久久久久中文字幕二区| 亚洲一区二区久久久久久久| 一区二区三区高清国产| 欧美激情一区二区三区成人| 91性高湖久久久久久久久_久久99| 欧美中文字幕精品| 亚洲精品自拍偷拍| 韩国三级日本三级少妇99| 日韩在线观看免费网站| 亚洲欧美国产日韩中文字幕| 国外色69视频在线观看| 亚洲成**性毛茸茸| 国内外成人免费激情在线视频网站| 欧美午夜久久久| 91久久综合亚洲鲁鲁五月天| 欧美在线视频观看| 中文字幕欧美日韩精品| 亚洲自拍在线观看| 97视频免费观看| 欧美成人精品不卡视频在线观看| 日韩美女主播视频| 韩国国内大量揄拍精品视频| 精品国产拍在线观看| 国产成人精品在线视频| 欧美在线观看视频| 91色视频在线观看| 亚洲精品欧美极品| 丝袜亚洲欧美日韩综合| 久久精品视频中文字幕| 日韩电影在线观看中文字幕| 日韩中文综合网| 欧美精品成人91久久久久久久| 亚洲一区二区久久| 亚洲欧美一区二区三区久久| 少妇av一区二区三区| 国产精品免费小视频| 欧美极品xxxx| 最新国产精品亚洲| 亚洲福利视频专区| 国产精品狠色婷| 中文字幕在线看视频国产欧美在线看完整| 91极品视频在线| 精品国产区一区二区三区在线观看| 亚洲男人天堂视频| 欧美另类极品videosbest最新版本| 韩国v欧美v日本v亚洲| 国产精品视频一| 亚洲成在人线av| 97久久国产精品| 欧美亚洲另类制服自拍| 91sao在线观看国产| 国产亚洲美女久久| 欧美精品18videosex性欧美| 97视频在线观看免费| 日韩免费黄色av| 在线成人激情黄色| 国产精品美女在线| 精品久久久久久国产| 成人免费观看49www在线观看| 亚洲午夜av久久乱码| 欧美激情在线观看| 91九色综合久久| 91国语精品自产拍在线观看性色| 日韩精品免费在线观看| 91成人免费观看网站| 亚洲第一中文字幕在线观看| 日韩欧美一区二区三区久久| 国产精欧美一区二区三区| 欧美日韩在线观看视频| 欧美成人精品在线视频| 国产91对白在线播放| 中文字幕国产日韩| 午夜精品免费视频| 成人国产精品久久久久久亚洲| 久久久久久久国产精品|