2012-08-02 54 views
0

我試圖蜷縮一個頁面(server.php)並將它發送到頭($ webServiceId $ hash和$ timestamp)中的三個變量,如下所示。我怎樣才能從server.php中的頭文件中獲取兩個變量,以便我可以處理它們併發送響應?我嘗試過使用Google搜索並在這裏搜索,但我似乎無法找出如何。如何抓取頁眉當瀏覽頁面

$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回聲其通過響應收到背頭,$響應單產的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編碼-API密鑰豈不等於。我可以設置捲曲標題嗎?

回答

0

函數getallheaders()將返回完整的請求標頭。如果您從server.php撥打電話,您應該能夠收到使用cURL發送的自定義標頭。

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

編輯

順便說一句,你需要引號server.php

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

EDIT 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")); 
+0

我試圖用,但除了我正在尋找它返回的一切。我是否在上面設置了錯誤?(我知道它返回的是什麼,因爲server.php正在將getallheaders()函數回傳到響應中。) – Derek 2012-08-02 22:23:31

+0

@Derek我用我的測試結果更新了我的答案。試試我的建議。 – Tchoupi 2012-08-03 14:00:36

0

我從來沒有用過getallheaders()但文件說,它讀取頭當前請求,這是不是你在做什麼。

答案就在這裏: Can PHP cURL retrieve response headers AND body in a single request?

後你會得到所有的頭爲一個字符串,然後發生爆炸,只是通過每一個strstr()或正則表達式來獲取值。

+0

其實我試圖獲取當前請求的標題。通過curl,我試圖發送一個額外的自定義標題到我正在捲曲的php頁面,並且該頁面需要檢索標題並處理它們。 – Derek 2012-08-02 22:21:31

+0

現在看來你的問題沒有正確的措辭。當你說「捲曲頁面」時,我假設你正在使用curl來請求並下載它。然後把它發回來? – 2012-08-02 22:24:43

+0

@MichaelOzeryansky我可能是錯的,但我明白Derek需要處理請求的兩端。提供的腳本用於發送帶有額外標題的請求到'server.php'。他需要在'server.php'中檢索這些頭文件,'getallheaders()'方便使用。 – Tchoupi 2012-08-03 13:31:11

0

你做錯了。 「CURLOPT_HEADER」只是一個在輸出中顯示請求和響應頭文件的布爾。您需要使用「CURLOPT_HTTPHEADER」,它需要一個標頭數組,並用於傳遞標頭和請求。

看:http://www.php.net/manual/en/function.curl-setopt.php