2009-12-15 53 views
0

例如,在以下捲曲片段:使用PHP Curl,我怎樣才能看到正在發送的內容?

$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); //set target URL 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);// allow redirects 
    curl_setopt($ch, CURLOPT_POST, $usePost); // set POST method 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); //set headers 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    curl_setopt($ch, CURLOPT_HEADER, $returnHeaders); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //prevent unverified SSL error 

之前,我在其上運行curl_exec,如果我想看到完整的請求頭和身體被髮送之前什麼。 (看是否是正確遵循一定的REST API指南)

+0

Dupe,http://stackoverflow.com/questions/1828935/php-curl-and-raw-headers – 2009-12-15 17:55:04

+0

我不認爲你可以在發送之前看到標題/正文,但CURLOPT_VERBOSE是你的朋友當涉及到在調試之後獲得完整的輸出。 – 2009-12-15 18:40:29

+0

不是#1828935。此問題在發送實際請求之前要求標題。 – GZipp 2009-12-15 19:41:43

回答

1

你可以發送請求到本地服務器:

$test_url = 'http://localhost/nonexistent-page'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $test_url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLINFO_HEADER_OUT, true); 
// Other options. 
curl_exec($ch); 

echo nl2br(curl_getinfo($ch, CURLINFO_HEADER_OUT)); 

這會給你的請求頭,只請求行路徑和主機:線路與您的實際請求不同。

+0

這不顯示請求正文。 :-( – 2017-05-21 22:02:55

0

如果您有權訪問服務器上的圖形環境,則可以使用Wireshark來檢查正在發送和接收的網絡數據包。 Wireshark允許您使用過濾器來過濾特定的IP地址和協議。

舉例來說,我使用此過濾器可查看所有流量從我的捲曲請求/響應與IP WXYZ(代替你正在連接的服務器的IP)服務器:

ip.addr == w.x.y.z && http 

我然後可以檢查我的所有請求響應。 這給了我很好的洞察力,在'引擎蓋下'發生了什麼。