2011-12-13 56 views
0

我正在尝试在服务器端实现oAuth以便为开发人员提供API。我遇到一个非常简单的问题。我希望能够处理发送给名为request.php的脚本的HTTP标头。处理使用curl发送的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); 

因此,在$头我收到了http响应头,但我想要做的是处理由request.php收到的头。

+0

请告诉我们多一点点 - 2腿或三条腿,例如终端用户是否会授权API访问?您要实施哪种oAuth协议版本 - 1.0a或2.0? – middlehut

回答

1

您应该使用

curl_setopt($s, CURLOPT_HEADER, true);

这将导致$res在你的代码有(如HTTP标准定义的共4个字符)两个头和数据由2 CRLF分隔。

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> 
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);