2012-02-23 79 views
5

我很难用PHP脚本使用CURL查询网络表单。我怀疑,我发送了一些网络服务器不喜欢的东西。为了看看CURL真正发送了什么,我希望看到发送到Web服务器的整个消息。查看CURL从PHP脚本发送的内容

如何设置CURL以提供完整的输出?

我做

curl_setopt($ch, CURLOPT_VERBOSE, TRUE); 

但磺酰基给我的报头的一部分。消息内容未显示。

回答

3

感谢所有的答案添加 的CURLINFO_HEADER_OUT选项手柄!毕竟,他们说这是不可能的。我走下了路,熟悉了Wireshark。不是一件容易的事,但绝对值得付出。

+0

如果您请求https端点,Wireshark将无法帮助,因为数据已加密。 – 2017-06-19 15:37:51

-1

如果你想要的内容不能你只是登录它?我做我的API类似呼吁

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, self::$apiURL); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_POST, count($dataArray)); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $dataString); 

$logger->info("Sending " . $dataString); 
self::$results = curl_exec($ch); 
curl_close($ch); 

$decoded = json_decode(self::$results); 
$logger->debug("Received " . serialize($decoded)); 

或者尝试

curl_setopt($ch, CURLOPT_STDERR, $fp); 
+0

这不是我要找的。我可以用XDebug检查我的变量,没问题。我希望看到整个HTTP请求,标题和由CURL发送的内容。 – BetaRide 2012-02-23 17:34:20

+1

@BetaRide据我所知,无法使用WireShark或tcpdump查看整个内容。您可以得到的最接近的是将标题和内容一起显示。 – Bot 2012-02-23 17:40:41

-2

我会建议使用curl_getinfo

<?php 
curl_exec($ch); 
    $info = curl_getinfo($ch); 
     if (!empty($info) && is_array($info) { 
      print_r($info); 
      } else { 
        throw new Exception('Curl Info is empty or not an array'); 
     }; 
?> 
+0

这只显示了很多关于响应的细节。我需要的是关于请求的所有细节(即web服务器的内容)。 – BetaRide 2012-02-23 17:36:27

1

您试过CURLINFO_HEADER_OUT

引述PHP手册curl_getinfo

CURLINFO_HEADER_OUT - 发送的请求字符串。对于这项工作,通过调用curl_setopt()

+0

那么手册正确地说:只有标题。但我需要整件事,标题和内容。 – BetaRide 2012-02-23 19:03:49

+0

为什么不把POST事情发布到其他地址并进行调试?如果cURL真的把事情搞砸了,反正它可能就是这样。 – 2012-02-23 23:08:37

+0

另外,关于标题的可能性要大得多。鉴于你想发布一个网络表单(在一些你不能控制的网站上,我猜),你确定它不是一个cookies问题吗?或者例如用户代理。或者是其他东西。 为什么不发布你的整个代码,也许我们可以以这种方式更快地诊断问题。 – 2012-02-23 23:10:59