導航:首頁 > 編程語言 > phpcurl獲取header

phpcurl獲取header

發布時間:2023-06-13 23:16:49

php curl如何直接轉發當前php接收的headersget請求如何直接轉發get參數post請求如何直接轉發post參數

本文實例講述了php使用CURL模擬GET與POST向微信介面提交及獲取數據的方法。分享給大家供大家參考,具體如下:
php CURL函數可以模仿用戶進行一些操作,如我們可以模仿用戶提交數據也可以模仿用戶進行網站訪問了,下面我們來介紹利用CURL模擬進行微信介面的GET與POST例子,例子非常的簡單就兩個:
Get提交獲取數據
/**
* @desc 獲取access_token
* @return String access_token
*/
function getAccessToken(){
$AppId = '1232assad13213123';
$AppSecret = '2312312321adss3123213';
$getUrl = 'htq.com/cgi-bin/token?grant_type=client_credential&appid='.$AppId.'&secret='.$AppSecret;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $getUrl);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURL_SSLVERSION_SSL, 2);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$data = curl_exec($ch);
$response = json_decode($data);
return $response->access_token;
}

post提交獲取數據
/**
* @desc 實現天氣內容回復
*/
public function testWeixin(){
$access_token = $this->getAccessToken();
$customMessageSendUrl = 'ht.qq.com/cgi-bin/message/custom/send?access_token='.$access_token;
$description = '今天天氣的詳細信息(從第三方獲取)。';
$url = ttpr.com/';
$picurl = 'her.com/';
$postDataArr = array(
'touser'=>'OPENID',
'msgtype'=>'news',
'news'=>array(
'articles'=>array(
'title'=>'當天天氣',
'description'=>$description,
'url'=>$url,
'picurl'=>$picurl,
),
),
);
$postJosnData = json_encode($postDataArr);
$ch = curl_init($customMessageSendUrl);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postJosnData);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$data = curl_exec($ch);
var_mp($data);
}

例子相對來說比較簡單也沒有什麼好詳細分析的了,大家照抄就可以實現我們想要的功能了.

❷ php獲取數據為什麼curl獲取不完整

因為,PHP CURL庫默認1024位元組的長度不等待數據的返回,所以你那段代碼需增加一項配置:

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
給你一個更全面的封裝方法:

function req_curl($url, &$status = null, $options = array())
{
$res = '';
$options = array_merge(array(
'follow_local' => true,
'timeout' => 30,
'max_redirects' => 4,
'binary_transfer' => false,
'include_header' => false,
'no_body' => false,
'cookie_location' => dirname(__FILE__) . '/cookie',
'useragent' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1',
'post' => array() ,
'referer' => null,
'ssl_verifypeer' => 0,
'ssl_verifyhost' => 0,
'headers' => array(
'Expect:'
) ,
'auth_name' => '',
'auth_pass' => '',
'session' => false
) , $options);
$options['url'] = $url;
$s = curl_init();
if (!$s) return false;
curl_setopt($s, CURLOPT_URL, $options['url']);
curl_setopt($s, CURLOPT_HTTPHEADER, $options['headers']);
curl_setopt($s, CURLOPT_SSL_VERIFYPEER, $options['ssl_verifypeer']);
curl_setopt($s, CURLOPT_SSL_VERIFYHOST, $options['ssl_verifyhost']);
curl_setopt($s, CURLOPT_TIMEOUT, $options['timeout']);
curl_setopt($s, CURLOPT_MAXREDIRS, $options['max_redirects']);
curl_setopt($s, CURLOPT_RETURNTRANSFER, true);
curl_setopt($s, CURLOPT_FOLLOWLOCATION, $options['follow_local']);
curl_setopt($s, CURLOPT_COOKIEJAR, $options['cookie_location']);
curl_setopt($s, CURLOPT_COOKIEFILE, $options['cookie_location']);
if (!empty($options['auth_name']) && is_string($options['auth_name']))
{
curl_setopt($s, CURLOPT_USERPWD, $options['auth_name'] . ':' . $options['auth_pass']);
}
if (!empty($options['post']))
{
curl_setopt($s, CURLOPT_POST, true);
curl_setopt($s, CURLOPT_POSTFIELDS, $options['post']);
//curl_setopt($s, CURLOPT_POSTFIELDS, array('username' => 'aeon', 'password' => '111111'));
}
if ($options['include_header'])
{
curl_setopt($s, CURLOPT_HEADER, true);
}
if ($options['no_body'])
{
curl_setopt($s, CURLOPT_NOBODY, true);
}
if ($options['session'])
{
curl_setopt($s, CURLOPT_COOKIESESSION, true);
curl_setopt($s, CURLOPT_COOKIE, $options['session']);
}
curl_setopt($s, CURLOPT_USERAGENT, $options['useragent']);
curl_setopt($s, CURLOPT_REFERER, $options['referer']);
$res = curl_exec($s);
$status = curl_getinfo($s, CURLINFO_HTTP_CODE);
curl_close($s);
return $res;
}

❸ 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獲取header擴展閱讀:

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請求的請求頭信息及相應頭信息

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);
//使用上面定義的ua
curl_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如何使用head協議來獲取資源的大小等信息

其實curl裡面早就有對HEAD協議的支持// 只需要在你的代碼中加上這樣一行,就會自動選擇head協議
curl_setopt($ch, CURLOPT_NOBODY, true);
如果你要讀取
Content-Length
,那麼只需要在curl_exec後// 讀取的header里的Content-Length值
$size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
需要說明的是HEAD協議雖然被大部分伺服器支持,但也不是說所有的伺服器都支持,有的伺服器為了防抓取,在設置中幹掉了這個協議。而
Content-Length
也不是必須的欄位,你應該做到如果有這個值,而且超過了最大值,可以返回錯誤,如果沒有這個值,或者沒有超過最大值,就必須自己通過已經下載的內容大小來判斷。
至於你說的最大資源下載長度,我還沒看到這個設置項,不過這個問題有一個更加美好的解決方案,那就是用到
CURLOPT_HEADERFUNCTION和CURLOPT_WRITEFUNCTION
兩個回調,那麼就只需要一次請求即可完成所有的判斷,而且可以隨時斷掉$size = 0;$max_size = 123456;
curl_setopt($ch, CURLOPT_HEADERFUNCTION, function ($ch, $str) {
// 第一個參數是curl資源,第二個參數是每一行獨立的header!
list ($name, $value) = array_map('trim', explode(':', $str, 2));
$name = strtolower($name);
// 判斷大小啦
if ('content-length' == $name) {
if ($value $max_size) {
return 0; // 返回0就會中斷讀取}}});
// 對於沒有content-length的,我們一邊讀取一邊判斷
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function ($ch, $str) use (&$size) {
$len = strlen($str);
$size += $len;
if ($size $max_size) {

閱讀全文

與phpcurl獲取header相關的資料

熱點內容
如何看漫威漫畫app 瀏覽:789
安卓手機如何按拼音排布app 瀏覽:721
java中exceptionin 瀏覽:882
java131 瀏覽:868
學英語不登錄的app哪個最好 瀏覽:299
安卓的後台運行怎麼設置 瀏覽:135
如何撰寫論文摘要以及編譯sci 瀏覽:416
安卓如何使用推特貼吧 瀏覽:429
怎樣避免程序員入獄 瀏覽:856
蘋果方塊消除安卓叫什麼 瀏覽:535
安卓世界征服者2怎麼聯機 瀏覽:297
國企招的程序員 瀏覽:969
哪個app可以看watch 瀏覽:518
dns備用什麼伺服器 瀏覽:1002
中達優控觸摸屏編譯失敗 瀏覽:80
上海科納壓縮機 瀏覽:680
python工時系統 瀏覽:551
查好友ip命令 瀏覽:118
通達信python量化交易 瀏覽:506
cnc編程工程師自我評價 瀏覽:132