Что в моем вызове PHP Curl мне нужно добавить, чтобы прочитать пользовательские заголовки ответа? - PullRequest
0 голосов
/ 13 ноября 2018

Я пробовал несколько способов прочитать пользовательский заголовок ответов, но не смог. Я знаю, что полученный ответ обслуживается nginx, а имена пользовательских заголовков начинаются с X -......

$endpoint =  'url here';
$ch = curl_init( $endpoint );

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'cbFunc');                                                                    


$result = curl_exec($ch);

print_r( curl_getinfo($ch ) );

1 Ответ

0 голосов
/ 13 ноября 2018

Руководство по PHP является отличным справочным руководством и хорошей отправной точкой, когда вы сталкиваетесь с подобными проблемами.

CURLOPT_HEADERFUNCTION [Установить значение] Обратный вызов, принимающий пять параметров.

1011 * поэтому *

log_headers('init');
$endpoint =  'url here';
$ch = curl_init( $endpoint );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'log_headers');                                                                   
$result = curl_exec($ch);
$headers=log_headers();
print_r($headers);

function log_headers($ch=false, $headers=false)
{
    static $hdrs;
    if (is_array($hrs) && $ch===$headers===false) {
        return $hdrs[];
    } elseif ($ch==='init') {
        $hdrs=array();
        return 0;
    } 
    $hdrs[]=$headers;
    return strlen($headers);
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...