处理使用curl发送的HTTP标头

时间:2011-12-13 14:51:57

标签: php http curl header http-headers

我目前正在尝试在服务器端实现oAuth,以便为开发人员提供API。我遇到了一个非常容易的问题。我希望能够处理发送到名为request.php的脚本的HTTP头。

我不知道我怎么能这样做。我是编写客户端包装器的代码,并尝试使用curl在request.php上进行http调用。

    $data = array('name' => 'Foo');

    $header = array('Content-type: text/plain', 'Content-length: 100');
    $ch = curl_init("test");

    curl_setopt($ch, CURLOPT_URL, 'http://localhost/api/request.php');
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);

    $res = curl_exec($ch);

    $headers = curl_getinfo($ch);

    curl_close($ch);

所以,在$ headers中我收到了http响应头,但我想要做的是处理request.php收到的头文件。

2 个答案:

答案 0 :(得分:1)

你应该使用

curl_setopt($s, CURLOPT_HEADER, true);

这将导致代码中的$res使标题和数据分开2个CRLF(HTTP标准中定义的总共4个字符)。

HTTP响应示例,

HTTP/1.0 302 Found
Content-Type: text/html; charset=UTF-8
Content-Length: 11782
Date: Tue, 13 Dec 2011 15:07:19 GMT
Server: GFE/2.0

<!DOCTYPE html>
<html>
(...)
</html>

答案 1 :(得分:0)

使用curl_getinfo读取标题。 没有必要设置(CURLOPT_HEADER,true)来执行此操作。

例如:

    ...
    curl_setopt($this->ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $params);

    $response = curl_exec($this->ch);
    $httpCode = curl_getinfo($this->ch, CURLINFO_HTTP_CODE);