2011-12-13 69 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);