我很难用PHP脚本使用CURL查询网络表单。我怀疑,我发送了一些网络服务器不喜欢的东西。为了看看CURL真正发送了什么,我希望看到发送到Web服务器的整个消息。查看CURL从PHP脚本发送的内容
如何设置CURL以提供完整的输出?
我做
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
但磺酰基给我的报头的一部分。消息内容未显示。
我很难用PHP脚本使用CURL查询网络表单。我怀疑,我发送了一些网络服务器不喜欢的东西。为了看看CURL真正发送了什么,我希望看到发送到Web服务器的整个消息。查看CURL从PHP脚本发送的内容
如何设置CURL以提供完整的输出?
我做
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
但磺酰基给我的报头的一部分。消息内容未显示。
感谢所有的答案添加 的CURLINFO_HEADER_OUT选项手柄!毕竟,他们说这是不可能的。我走下了路,熟悉了Wireshark。不是一件容易的事,但绝对值得付出。
如果你想要的内容不能你只是登录它?我做我的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);
我会建议使用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');
};
?>
这只显示了很多关于响应的细节。我需要的是关于请求的所有细节(即web服务器的内容)。 – BetaRide 2012-02-23 17:36:27
您试过CURLINFO_HEADER_OUT
?
引述PHP手册curl_getinfo
:
CURLINFO_HEADER_OUT - 发送的请求字符串。对于这项工作,通过调用curl_setopt()
那么手册正确地说:只有标题。但我需要整件事,标题和内容。 – BetaRide 2012-02-23 19:03:49
为什么不把POST事情发布到其他地址并进行调试?如果cURL真的把事情搞砸了,反正它可能就是这样。 – 2012-02-23 23:08:37
另外,关于标题的可能性要大得多。鉴于你想发布一个网络表单(在一些你不能控制的网站上,我猜),你确定它不是一个cookies问题吗?或者例如用户代理。或者是其他东西。 为什么不发布你的整个代码,也许我们可以以这种方式更快地诊断问题。 – 2012-02-23 23:10:59
如果您请求https端点,Wireshark将无法帮助,因为数据已加密。 – 2017-06-19 15:37:51