⑴ 在 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進行分割截取第一部分即為響應頭信息。