php curl请求信息和返回信息设置代码实例

   这篇文章主要介绍了php curl请求信息和返回信息设置代码实例,本文直接给出代码实例,需要的朋友可以参考下

  在用curl抓取网页内容的时候,经常要知道,网页返回的请求头信息,和请求的相关信息,特别是在请求过程中存在重定向的时候获取请求返回头信息对分析请求内容很有帮助

  下面就是一个请求中存在重定向的例子,我们的目的是要获取最终实际请求的url地址

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

$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';
 
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
//curl_setopt($ch, CURLOPT_POST, 1);
//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_FOLLOWLOCATION,1);//如果返回的response 头部中存在Location值,就会递归请求
$content=curl_exec($ch);
$rinfo=curl_getinfo($ch);
 
echo $content,"</br>";
echo "<hr>";
print_r($rinfo);

  下面是输出的结果

  ?

1
2

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
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 ( ))

  可以看到,经过递归请求后最终得到一个200的response,但是这中方式不能得到最后一次请求的url,也就是最终实际请求的url,要想得到这个url就需要递归的分析每次请求返回的response

  下面是我写的一个获取最后一次请求url的递归函数

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

$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';
[php] view plaincopy
$realUrl=getRedirectLocation($url);
 
echo "</br>--->",$realUrl;
 
function getRedirectLocation($url){
 
$realUrl=$url;
echo $url,"</br>";
$ch=curl_init();
curl_setopt($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 $matches[1],"</br>";
unset($content);
$realUrl=getRedirectLocation($matches[1]);
}
if(isset($content)){
unset($content);
}
return $realUrl;
}

时间: 2024-10-26 06:30:26

php curl请求信息和返回信息设置代码实例的相关文章

php curl请求信息和返回信息设置代码实例_php实例

在用curl抓取网页内容的时候,经常要知道,网页返回的请求头信息,和请求的相关信息,特别是在请求过程中存在重定向的时候获取请求返回头信息对分析请求内容很有帮助 下面就是一个请求中存在重定向的例子,我们的目的是要获取最终实际请求的url地址 $url='http://www.appchina.com/market/r/489267/com.appshare.android.ilisten.vapk?c=aplus.direct&uid=gAJ9cQEu1TlyZxsXN-aB4RaanvFL6t6

SQL临时表递归查询子信息并返回记录的代码_MsSql

复制代码 代码如下: declare @Q_ID uniqueidentifier set @Q_ID = dbo.uf_GetParamValueByName(@Params,'@指标ID'); declare @QAExp_ID char(36) --指标属性公式ID set @QAExp_ID='3D2B8F3F-0B7E-46FD-9B33-050F846C2869' declare @temp_qid table(QID char(36),ExpValue nvarchar(max))

client发的请求接收返回信息时用send来接收,其余的由receive来接收,怎么改?求大神帮忙

问题描述 client发的请求接收返回信息时用send来接收,其余的由receive来接收,怎么改?求大神帮忙 sever的请求都友client的receive来接收,client发的请求接收返回信息时用send来接收,怎么改下?求大神帮忙,我只会大概写了下代码,菜鸟急需用! package test; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; impo

iframe接受中文乱码-最近在做一个导出功能 使用iframe 去请求servlet 在接受servlet返回信息时 乱码

问题描述 最近在做一个导出功能 使用iframe 去请求servlet 在接受servlet返回信息时 乱码 最近在做一个导出功能 使用iframe去请求servlet ,在接受servlet返回信息时 乱码 请教各位大神 如何解决 如何解决,各位大神 小弟感激不尽 解决方案 返回数据的时候进行编码,之后在返回.不知道你是怎么返回的 解决方案二: 下面这样试试 response.setCharEncoding("UTF-8");//这个地方是手写的代码.你自己参照改一下 PrintWr

Ping命令的幕后过程及其返回信息的分析

"Ping"命令是我们在判断网络故障常用的命令,但您真正明白这个命令运行后会发生什么,以及出现的各种信息说明了什么吗?本人将平时工作中积累的经验介绍给大家. "Ping"的幕后过程 我们以下面一个网络为例:有A.B.C.D四台机子,一台路由RA,子网掩码均为255.255.255.0,默认路由为192.168.0.1 1.在同一网段内 在主机A上运行"Ping 192.168.0.5"后,都发生了些什么呢? 首先,Ping命令会构建一个固定格式的

线程之从线程返回信息

[本文转载于 线程之从线程返回信息 习惯了传统单线程过程式模型的程序员在转向多线程环境时,最难掌握的一点就是如何从线程返回信息.我们再拿前一blog中的例子为例,不再简单地显示SHA-256摘要,摘要线程需要把摘要返回给执行主线程.大多数人的第一个反应就是把结果存储在一个字段中,再提供一个获取方法: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 package o1

javascript-EXTjs &amp;amp;amp; JSP页面弹出新窗口并返回信息问题

问题描述 EXTjs & JSP页面弹出新窗口并返回信息问题 1. A页面 submit 到 process.jsp页面 A页面JS代码 fm.getForm().submit({ url : 'process.jsp' , success : function(fm, action) { if (action.result == true) { window.close(); } } }) 2.process.jsp 页面处理完请求,弹出新页面Error.jsp 显示信息,并返回 true 到

PHP curl伪造IP地址和header信息代码实例

  这篇文章主要介绍了PHP curl伪造IP地址和header信息代码实例,本文给出服务器端和客户端实现代码,提供伪造功能和服务器端检测代码,需要的朋友可以参考下 curl虽然功能强大,但是只能伪造$_SERVER["HTTP_X_FORWARDED_FOR"],对于大多数IP地址检测程序来说,$_SERVER["REMOTE_ADDR"]很难被伪造: 首先是client.php的代码 代码如下: $headers['CLIENT-IP'] = '202.103.

web service-jax-ws调用webService返回结果为json,使用拼装soap调用返回信息转义了

问题描述 jax-ws调用webService返回结果为json,使用拼装soap调用返回信息转义了 返回json:{"loginName":"admin1","msg":"return success","ret":"0"} 以下是调用方法: public static String callWS(String SOAPUrl, String body) throws Exceptio