⑴ 在 php curl返回
给你个我写的curl方法。
/**
*curl模拟提交
*@param string $url 网址
*@param array/string $opt 提交参数
*@param string &$header 取回的头信息
*@param string $redirect 是否重定向
*@param boolean $ssl 验证https证书
*@return [type] 返回信息
*/
functioncurl($url,$opt='GET',&$header=null,$redirect=true,$ssl=false){
//初始化
$ch=curl_init($url);
//配置设置
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,$ssl);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,$ssl);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,$redirect);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); #返回结果
curl_setopt($ch,CURLOPT_HEADER,true); #显示协议头
if(is_array($opt)){
//转小写
$opt=array_change_key_case($opt,CASE_LOWER);
//POST
if(isset($opt['type'])&&strtoupper($opt['type'])=='POST'){
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,(isset($opt['data'])?$opt['data']:''));
}
//User-Agent
if(array_key_exists('ua',$opt))
curl_setopt($ch,CURLOPT_USERAGENT,$opt['ua']);
//Header
if(array_key_exists('header',$opt)){
curl_setopt($ch,CURLOPT_HTTPHEADER,(array)$opt['header']);
}
//Cookie
if(array_key_exists('cookie',$opt))
curl_setopt($ch,CURLOPT_COOKIE,$opt['cookie']);
//Referer
if(array_key_exists('referer',$opt))
curl_setopt($ch,CURLOPT_REFERER,$opt['referer']);
}else{
//仅POST
if(strtoupper((string)$opt)=='POST')
curl_setopt($ch,CURLOPT_POST,true);
}
$result=curl_exec($ch);
if(curl_errno($ch)){
$result=curl_error($ch);
}else{
//获取头长度
$length=curl_getinfo($ch,CURLINFO_HEADER_SIZE);
//取出头信息
$header=substr($result,0,$length);
//去掉头信息
$result=substr($result,$length);
}
//释放
curl_close($ch);
return$result;
}
⑵ 如何在php中获取curl请求的请求头信息及相应头信息
oCurl=curl_init();
//设置请求头
$header[]="Content-type:application/x-www-form-urlencoded";
$user_agent="Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.36(KHTML,likeGecko)Chrome/33.0.1750.146Safari/537.36";
curl_setopt($oCurl,CURLOPT_URL,$sUrl);
curl_setopt($oCurl,CURLOPT_HTTPHEADER,$header);
//返回response_header,该选项非常重要,如果不为true,只会获得响应的正文
curl_setopt($oCurl,CURLOPT_HEADER,true);
//是否不需要响应的正文,为了节省带宽及时间,在只需要响应头的情况下可以不要正文
curl_setopt($oCurl,CURLOPT_NOBODY,true);
//使用上面定义的uacurl_setopt($oCurl,CURLOPT_USERAGENT,$user_agent);curl_setopt($oCurl,CURLOPT_RETURNTRANSFER,1);
//不用POST方式请求,意思就是通过GET请求
curl_setopt($oCurl,CURLOPT_POST,false);$sContent=curl_exec($oCurl);
//获得响应结果里的:头大小
$headerSize=curl_getinfo($oCurl,CURLINFO_HEADER_SIZE);
//根据头大小去获取头信息内容
$header=substr($sContent,0,$headerSize);
curl_close($oCurl);
⑶ php curl中CURLOPT_HTTPHEADER 这个参数的含义
php curl中CURLOPT_HTTPHEADER 这个参数的含义是:CURLOPT_HTTPHEADER 一个用来设置HTTP头字段的数组。Content-Type 表示后面的文档属于什么MIME类型。charset表示浏览器可接受的字符集。
HTTP头Servlet默认为text/plain,但通常需要显式地指定为text/html。由于经常要设置Content-Type,因此HttpServletResponse提供了一个专用的方法setContentType。
HTTP请求头的部分类型:
1、Accept:浏览器可接受的MIME类型。
2、Accept-Charset:浏览器可接受的字符集。
3、Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。
4、Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显着地减少下载所需要的时间。
5、Content-Length:表示请求消息正文的长度。
6、Cookie:这是最重要的请求头信息之一。
(3)phpcurl头信息扩展阅读:
PHP中的CURL函数库(部分):
1、curl_setopt_array — 为cURL传输会话批量设置选项
2、curl_setopt — 设置一个cURL传输选项
3、curl_close — 关闭一个cURL会话
4、curl__handle — 复制一个cURL句柄和它的所有选项
5、curl_errno — 返回最后一次的错误号
6、curl_error — 返回一个保护当前会话最近一次错误的字符串
7、curl_escape — 使用 URL 编码给定的字符串
在实际的使用当中,使用得最多的函数是curl_setopt — 设置一个cURL传输选项说明:bool curl_setopt ( resource $ch , int $option , mixed $value )其中,ch 由 curl_init() 返回的 cURL 句柄。option 表示的是需要设置的CURLOPT_XXX选项。
option的可选参数:
1、CURLOPT_BUFFERSIZE 每次获取的数据中读入缓存的大小,但是不保证这个值每次都会被填满。在cURL 7.10中被加入。
2、CURLOPT_CLOSEPOLICY 不是CURLCLOSEPOLICY_LEAST_RECENTLY_USED就是CURLCLOSEPOLICY_OLDEST,还存在另外三个CURLCLOSEPOLICY_,但是cURL暂时还不支持。
3、CURLOPT_CONNECTTIMEOUT 在发起连接前等待的时间,如果设置为0,则无限等待。
⑷ php 如何查看使用curl模拟的信息
哥们。我认为是做不到的。。咱们做个假设
firebug能抓到原始信息是因为http请求是由浏览器发出的,浏览器是在本地,你当然能抓到包了,而curl是有apache服务端的php发出的,一个是在服务端一个是在客户端,怎么抓?
再说个简单的例子就是你的PHP程序放在 机房,你浏览器在你家,当然抓不到服务器发出去的包,除非你是黑客~~
最简单的办法就是把返回值echo
⑸ 如何在php中获取curl请求的请求头信息及相应头信息
<?php
$url='http://demo.zjmainstay.cn';
$ch=curl_init($url);
curl_setopt($ch,CURLOPT_HEADER,true);//返回头信息
curl_setopt($ch,CURLOPT_NOBODY,true);//不返回内容
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//返回数据不直接输出
$content=curl_exec($ch);//执行并存储结果
curl_close($ch);
echo$content;
更多关于phpcURL的内容,请参考我的博客《PHPcURL应用》
http://www.zjmainstay.cn/php-curl
⑹ 你好,求教个php curl获取header和body的问题。我想一次分别获取header里的session和显示图片内容。
session是不可以获取的,只可以得到COOKIE是在HEADER里
header头和内容之间有一个空行分隔,你可以依此把此把头信息截掉,只把内容保存成图片文件
⑺ curl命令能把HTTP头信息打印出来么
不知道你是不是要这个:curl-Ihttp://www.zjmainstay.cn
可以使用mancurl命令查看curl的用法。
phpcurl的话可以参考我的博客《PHPcURL实现模拟登录与采集使用方法详解》
http://www.zjmainstay.cn/php-curl
⑻ php curl提交头部信息错误
CURLOPT_HTTPHEADER:
一个用来设置HTTP头字段的数组。使用如下的形式的数组进行设置:array('Content-type: text/plain', 'Content-length: 100')
<?php
functiongetwebcontent($url){
$ch=curl_init();
$data=array(
'ap'=>'2',
'c1'=>'4',
'c2'=>'4',
'g_w'=>'0100',
'dd'=>'0',
'h'=>'8',
'iasign'=>'bedvkt2gyd9vkgrx',
'pp'=>'200',
);
$headers['X-rvt']='';
$headers['Referer']='http://www.benmi.com/IA.html?c1=4&c2=4&g_w=0100&h=1';
$headers['Accept-Language']='zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3';
$headers['Cookie']='iasign=bedvkt2gyd9vkgrx;';
$timeout=20;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_VERBOSE,0);
curl_setopt($ch,CURLOPT_HEADER,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,0);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,0);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
$contents=curl_exec($ch);
curl_close($ch);
return$contents;
}
$c=getwebcontent('http://www.benmi.com/Ashx/IAPageAjax.ashx');
print($c);
⑼ php get请求中的请求头应该如何设置
获取请求头信息,可以在curl_exec函数执行前,添加代码curl_setopt($ch,CURLINFO_HEADER_OUT,true);在curl_exec函数执行后,通过 curl_getinfo($ch,CURLINFO_HEADER_OUT) 来获取curl执行请求的请求数据。
获取响应头信息,可以在curl_exec函数执行前,添加代码 curl_setopt($ch, CURLOPT_HEADER, true);curl_setopt($ch, CURLOPT_NOBODY,true); 之后 通过curl_exec函数来获取响应头信息。获取设置 curl_setopt($ch, CURLOPT_NOBODY,false);然后对curl_exec获取的值通过\r\n\r\n进行分割截取第一部分即为响应头信息。