php - 我需要在 PHP Curl 调用中添加什么来读取响应的自定义标头?
问题描述
我尝试了几种方法来读取响应自定义标头,但未能。我知道我得到的响应是由 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 ) );
解决方案
PHP 手册是一个很好的参考指南,当您遇到此类问题时,它是一个很好的起点。
CURLOPT_HEADERFUNCTION [设置值] 接受五个参数的回调。
因此
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);
}
推荐阅读
- html - 页脚中的居中和间距图标
- php - 使用 MariaDB 10.3.9 编译 PHP-7.1.20 时出错
- azure-devops - Azure DevOps (VSTS) 无法创建公共项目
- go - S3 签名 URL 失败
- java - 如何计算二维矢量场的散度和卷曲?
- sql - 带有 WHERE 子句的 VBA SQL 查询
- dart - 在 Flutter 中获取 BuildContext 以进行本地化
- python - Django:如何以不可怕的方式查询子、孙等记录
- javascript - 如何使用动态生成的 url 使用 Jquery getScript 缓存
- java - 设置边距时,相对布局中的按钮会被压扁