PHP cURL獲取HTTP響應頭
阿新 • • 發佈:2021-02-09
平時做開發時,經常會用到PHP的cURL擴充套件,用於請求外部HTTP介面。大多數情況下,我們只需要獲取口返回的響應體(HTTP response body),但如果我們想獲取響應頭(HTTP response header)那可以怎麼做呢?
可惜的是,cURL擴充套件沒有提供原生的方法讓我們(以陣列的形式)直接獲取響應頭,只能通過稍微複雜一點的方法來獲取。
直接上程式碼:
<?php
function headerHandler($curl, $headerLine) {
$len = strlen($headerLine);
// HTTP響應頭是以:分隔key和value的
$split = explode(':', $headerLine, 2);
if (count($split) > 1) {
$key = trim($split[0]);
$value = trim($split[1]);
// 將響應頭的key和value存放在全域性變數裡
$GLOBALS['G_HEADER'][$key] = $value;
}
return $len;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.baidu.com" );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADERFUNCTION, "headerHandler"); // 設定header處理函式
$responseBody = curl_exec($ch);
curl_close($ch);
var_dump($GLOBALS['G_HEADER']); // 以陣列形式列印響應頭
var_dump($responseBody); // 列印響應體
打印出來的百度返回的響應頭: