例如,在以下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 :(得分: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));
这将为您提供请求标头,只有请求行路径和Host:行与您的实际请求不同。
答案 1 :(得分:0)
如果您可以访问服务器上的图形环境,则可以使用Wireshark检查正在发送和接收的网络数据包。 Wireshark允许您使用过滤器来过滤掉特定的IP地址和协议。
例如,我使用此过滤器来查看来自我的cURL请求/响应的所有流量,其中包含IP w.x.y.z(替换为您要连接的服务器的IP):
ip.addr == w.x.y.z && http
然后,我可以检查所有请求回复。 这让我非常了解“幕后发生的事情”。