《php curl恳求信息和返回信息设置代码实例_.docx》由会员分享,可在线阅读,更多相关《php curl恳求信息和返回信息设置代码实例_.docx(5页珍藏版)》请在三一文库上搜索。
1、php curl恳求信息和返回信息设置代码实例_ 这篇文章主要介绍了php curl恳求信息和返回信息设置代码实例,本文挺直给出代码实例,需要的伴侣可以参考下 在用curl抓取网页内容的时候,常常要知道,网页返回的恳求头信息,和恳求的相关信息,格外是在恳求过程中存在重定向的时候猎取恳求返回头信息对分析恳求内容很有关心 下面就是一个恳求中存在重定向的例子,我们的目的是要猎取最终实际恳求的url地址 $url=http:/ $ch=curl_init(); curl_setopt($ch, CURLOPT_URL, $url); /curl_setopt($ch, CURLOPT_POST, 1)
2、; /curl_setopt($ch, CURLOPT_POSTFIELDS, $params); curl_setopt($ch, CURLOPT_HEADER, 1);/返回response头部信息 curl_setopt($ch, CURLOPT_NOBODY, 1);/不返回response body内容 /curl_setopt($ch, CURLOPT_MAXREDIRS, 1);/设置恳求最多重定向的次数 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);/不挺直输出response curl_setopt($ch, CURLOPT_FOLLOW
3、LOCATION,1);/假如返回的response 头部中存在Location值,就会递归恳求 $content=curl_exec($ch); $rinfo=curl_getinfo($ch); echo $content,/br; echo hr; print_r($rinfo); 下面是输出的结果 HTTP/1.1 200 OKServer: nginxDate: Sat, 22 Dec 2021 06:17:44 GMTContent-Type: application/vnd.android.package-archiveConnection: closeLast-Modified
4、: Mon, 03 Dec 2021 16:00:00 GMTExpires: Tue, 03 Dec 2021 16:00:00 GMTCache-Control: max-age=31536000Content-Length: 2142149 Array( url = 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
5、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 ( )
6、可以看到,经过递归恳求后最终得到一个200的response,但是这中方式不能得到最终一次恳求的url,也就是最终实际恳求的url,要想得到这个url就需要递归的分析每次恳求返回的response 下面是我写的一个猎取最终一次恳求url的递归函数 $url=http:/ php view plaincopy $realUrl=getRedirectLocation($url); echo /br-,$realUrl; function getRedirectLocation($url) $realUrl=$url; echo $url,/br; $ch=curl_init(); curl_se
7、topt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 1);curl_setopt($ch, CURLOPT_TIMEOUT, 3);/设置curl执行时间不超过3秒 /curl_setopt($ch, CURLOPT_NOBODY, 1);/这行不能要,假如添上,那么在遇到302重定向的时候就会得不到真正的恳求url curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); $content=curl_exec($ch); /echo $content; $rinfo=curl_getinfo($ch); $matches=array(); if(preg_match(/Location:s+?(.+?)s+?/, $content,$matches) /echo $matches1,/br; unset($content); $realUrl=getRedirectLocation($matches1); if(isset($content) unset($content); return $realUrl; 更多信息请查看IT技术专栏 .