如何在浏览页面时抓取标题

时间:2012-08-02 21:09:37

标签: php curl

我正在尝试卷曲页面(server.php)并在标头中发送三个变量($ webServiceId $ hash和$ timestamp),如下所示。如何从server.php中的标题中获取两个变量,以便我可以处理它们并发送响应?我在这里尝试使用谷歌搜索和搜索,但我似乎无法找到如何。

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, 'server.php');
curl_setopt($ch, CURLOPT_HTTPGET, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: URL-Encoded-API-Key {$webServiceId},{$hash},{$timestamp}"));
$response = curl_exec($ch);
curl_close ($ch);
// dump response
print_r( $response );

如果server.php回显了通过响应收到的标题,那么$ response的print_r会产生:

HTTP/1.1 200 OK Date: Thu, 02 Aug 2012 22:18:59 GMT Server: LiteSpeed Connection: close X-Powered-By: PHP/5.3.14 Allow: GET

授权:URL-Encoded-API-Key不在那里。我可以将curl标头设置错误吗?

3 个答案:

答案 0 :(得分:0)

函数getallheaders()将返回完整的请求标头。如果您从server.php拨打电话,则应该能够收到通过cURL发送的自定义标头。

http://php.net/manual/en/function.getallheaders.php

修改

顺便说一句,您需要server.php附近的引号:

curl_setopt($ch, CURLOPT_URL, 'server.php');

编辑2

我使用2个脚本测试了它:

<强> client.php

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, 'http://127.0.0.1/server.php');
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: URL-Encoded-API-Key 12,12113132,1330032113"));
$response = curl_exec($ch);
curl_close ($ch);

// dump response
var_dump( $response );

<强> server.php

var_dump(getallheaders());

致电client.php时,我收到以下回复:

array(3) {
  ["Host"]=>
  string(9) "127.0.0.1"
  ["Accept"]=>
  string(3) "*/*"
  ["Authorization"]=>
  string(42) "URL-Encoded-API-Key 12,12113132,1330032113"
}

我的猜测是您的自定义标头格式不正确。尝试使用简单的标题,看看它是否有效:

curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: 123456"));

答案 1 :(得分:0)

我从未使用过getallheaders(),但是文档说它会读取当前请求的标题,这不是你正在做的事情。

答案在这里: Can PHP cURL retrieve response headers AND body in a single request?

将所有标题作为字符串后,然后将其展开,只需使用strstr()或正则表达式获取值即可。

答案 2 :(得分:0)

你做错了。 “CURLOPT_HEADER”只是一个在输出中显示请求和响应头的bool。您需要使用“CURLOPT_HTTPHEADER”,它需要一个标头数组,并用于通过请求传递标头。

请注意:http://www.php.net/manual/en/function.curl-setopt.php