我目前正在尝试在服务器端实现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收到的头文件。
答案 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);