作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用这样的代理连接到一个站点:
$curl = curl_init();
curl_setopt($curl, CURLOPT_PROXY, $proxy);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HEADER, TRUE);
$result = curl_exec ($curl);
问题是 CURLOPT_HEADER
从代理连接返回 header ,而我需要从实际请求到 URL 的 header 。我相信解决方案涉及使用 CURLOPT_HEADERFUNCTION
但我不明白如何使用它。
我试过这个(取自 SO 的其他地方):
curl_setopt($curl, CURLOPT_HEADERFUNCTION, "HandleHeaderLine");
使用函数:
function HandleHeaderLine($curl, $header_line ) {
echo "<br>YEAH: ".$header_line; // or do whatever
return strlen($header_line);
}
但是我好像只能返回字节数。我不确定如何获得实际值(value)。在我的情况下,我只想要 Location
header 。
谢谢。
最佳答案
CURLOPT_HEADERFUNCTION
的匿名回调将需要访问您要在其中存储 header 信息的变量。有几种不同的方法,但这里有一些例子:
使用使用
:
$headers = [];
...
function HandleHeaderLine($curl, $header_line) use (&$headers)
{
...
if ($isHeaderIWant) {
$header[] = 'some info';
}
return strlen($header_line);
}
使用类属性:
private $headers = [];
...
function HandleHeaderLine($curl, $header_line)
{
...
if ($isHeaderIWant) {
$this->header[] = 'some info';
}
return strlen($header_line);
}
关于PHP curl 如何在使用代理时检索 header 。 CURLOPT_HEADERFUNCTION?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32653598/
我正在实现一个 C 程序,它需要从 Content-Length header 中读取远程文件的大小(当 Content-Length 在响应 header 中发送时) . 我查看了 libcurl
我正在使用这样的代理连接到一个站点: $curl = curl_init(); curl_setopt($curl, CURLOPT_PROXY, $proxy); curl_setopt($curl
我有这个包装器可以从 Joomla 中加载一个 symfony 项目 class NZGBCComponentHelper { function requestAndFollow($path
我是一名优秀的程序员,十分优秀!