PHP卷曲使用Proxy时如何检索标头. CURLOPT_HEADERFUNCTION?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP卷曲使用Proxy时如何检索标头. CURLOPT_HEADERFUNCTION?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用这样的代理连接到网站:

$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正在从代理连接返回标头,而我需要从实际请求到URL的标头.我相信解决方案涉及使用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);
}

但似乎我只能返回字节数.我不确定如何获得实际价值.在我的情况下,我只想要位置标题.

谢谢.

解决方法

CURLOPT_HEADERFUNCTION的匿名回调将需要访问您要在其中存储标头信息的变量.有几种不同的方法,但这里有一些例子:

使用方法

$headers = [];
...
function HandleHeaderLine($curl,$header_line) use (&amp;$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卷曲使用Proxy时如何检索标头. CURLOPT_HEADERFUNCTION?全部内容,希望文章能够帮你解决PHP卷曲使用Proxy时如何检索标头. CURLOPT_HEADERFUNCTION?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。