国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

php curl請求信息和返回信息設(shè)置代碼實例

2024-05-06 16:18:58
字體:
供稿:網(wǎng)友

這篇文章主要介紹了php curl請求信息和返回信息設(shè)置代碼實例,本文直接給出代碼實例,需要的朋友可以參考下

在用curl抓取網(wǎng)頁內(nèi)容的時候,經(jīng)常要知道,網(wǎng)頁返回的請求頭信息,和請求的相關(guān)信息,特別是在請求過程中存在重定向的時候獲取請求返回頭信息對分析請求內(nèi)容很有幫助

下面就是一個請求中存在重定向的例子,我們的目的是要獲取最終實際請求的url地址

 

 
  1. $url='http://www.appchina.com/market/r/489267/com.appshare.android.ilisten.vapk?c=aplus.direct&uid=gAJ9cQEu1TlyZxsXN-aB4RaanvFL6t6Bj-vj0rIBs&p=aplus.detail&m=redirect';  
  2.  
  3. $ch=curl_init();  
  4. curl_setopt($ch, CURLOPT_URL, $url);  
  5. //curl_setopt($ch, CURLOPT_POST, 1);  
  6. //curl_setopt($ch, CURLOPT_POSTFIELDS, $params);  
  7. curl_setopt($ch, CURLOPT_HEADER, 1);//返回response頭部信息  
  8. curl_setopt($ch, CURLOPT_NOBODY, 1);//不返回response body內(nèi)容  
  9. //curl_setopt($ch, CURLOPT_MAXREDIRS, 1);//設(shè)置請求最多重定向的次數(shù)  
  10. curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//不直接輸出response  
  11. curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);//如果返回的response 頭部中存在Location值,就會遞歸請求  
  12. $content=curl_exec($ch);  
  13. $rinfo=curl_getinfo($ch);  
  14.  
  15. echo $content,"</br>";  
  16. echo "<hr>";  
  17. print_r($rinfo); 

下面是輸出的結(jié)果

 

 
  1. HTTP/1.1 200 OKServer: nginxDate: Sat, 22 Dec 2012 06:17:44 GMTContent-Type: application/vnd.android.package-archiveConnection: closeLast-Modified: Mon, 03 Dec 2012 16:00:00 GMTExpires: Tue, 03 Dec 2013 16:00:00 GMTCache-Control: max-age=31536000Content-Length: 2142149 
  2. Array( [url] => http://www.d.appchina.com/McDonald/r/489267/com.appshare.android.ilisten.vapk?c=aplus.direct&uid=gAJ9cQEu1TlyZxsXN-aB4RaanvFL6t6Bj-vj0rIBs&p=aplus.detail&m=redirect [content_type] => application/vnd.android.package-archive [http_code] => 200 [header_size] => 289 [request_size] => 196 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.171621 [namelookup_time] => 0.135256 [connect_time] => 0.152913 [pretransfer_time] => 0.152916 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => 2142149 [upload_content_length] => 0 [starttransfer_time] => 0.171582 [redirect_time] => 0 [certinfo] => Array ( ))  

可以看到,經(jīng)過遞歸請求后最終得到一個200的response,但是這中方式不能得到最后一次請求的url,也就是最終實際請求的url,要想得到這個url就需要遞歸的分析每次請求返回的response

下面是我寫的一個獲取最后一次請求url的遞歸函數(shù)

 

 
  1. $url='http://www.appchina.com/market/r/489267/com.appshare.android.ilisten.vapk?c=aplus.direct&uid=gAJ9cQEu1TlyZxsXN-aB4RaanvFL6t6Bj-vj0rIBs&p=aplus.detail&m=redirect';  
  2. [php] view plaincopy 
  3. $realUrl=getRedirectLocation($url);  
  4.  
  5. echo "</br>--->",$realUrl;  
  6.  
  7. function getRedirectLocation($url){  
  8.  
  9. $realUrl=$url;  
  10. echo $url,"</br>";  
  11. $ch=curl_init();  
  12. curl_setopt($ch, CURLOPT_URL, $url);  
  13. curl_setopt($ch, CURLOPT_HEADER, 1);curl_setopt($ch, CURLOPT_TIMEOUT, 3);//設(shè)置curl執(zhí)行時間不超過3秒  
  14. //curl_setopt($ch, CURLOPT_NOBODY, 1);//這行不能要,如果添上,那么在遇到302重定向的時候就會得不到真正的請求url  
  15. curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);  
  16. $content=curl_exec($ch);  
  17. //echo $content;  
  18. $rinfo=curl_getinfo($ch);  
  19. $matches=array();  
  20. if(preg_match('/Location:/s+?(.+?)/s+?/'$content,$matches)){  
  21. //echo $matches[1],"</br>";  
  22. unset($content);  
  23. $realUrl=getRedirectLocation($matches[1]);  
  24. }  
  25. if(isset($content)){  
  26. unset($content);  
  27. }  
  28. return $realUrl;  
  29. }  

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 石狮市| 静海县| 固始县| 荣成市| 西平县| 都匀市| 山阴县| 抚远县| 马尔康县| 乌恰县| 深水埗区| 吴桥县| 金乡县| 元谋县| 民乐县| 泰顺县| 上饶市| 星座| 会宁县| 竹溪县| 屏南县| 岳普湖县| 宜城市| 陆丰市| 略阳县| 哈巴河县| 嵊泗县| 樟树市| 漳浦县| 正定县| 若尔盖县| 云安县| 阿鲁科尔沁旗| 潜江市| 固安县| 上犹县| 双牌县| 连平县| 将乐县| 襄樊市| 吴江市|