2009-12-15 64 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 

我然后可以检查我的所有请求响应。 这给了我很好的洞察力,在'引擎盖下'发生了什么。