显示Curl POST请求标头?有没有办法做到这一点?

时间:2010-07-02 09:07:00

标签: php curl request header libcurl

我正在构建一个Curl Web自动化应用程序,并且遇到了一些问题,我没有获得所需的POST操作结果,我在查找如何显示我发送的完整POST请求时遇到了一些问题(带有标题),我一直在搜索这个,但所有出现的是响应标题,实际上我也想要这些,但也请求,我在谷歌上找到的帖子似乎都没有提到..

我知道我可以使用类似的东西显示curl请求的结果(请原谅我,如果我的语法关闭,我已经用我的ide和代码关闭我的虚拟机来引用

 $result = curl($curl_exect) ;

无论如何,我非常感谢有关如何查看完整标题的任何建议,谢谢

5 个答案:

答案 0 :(得分:161)

以下是您所需要的一切:

curl_setopt($curlHandle, CURLINFO_HEADER_OUT, true); // enable tracking
... // do curl request    
$headerSent = curl_getinfo($curlHandle, CURLINFO_HEADER_OUT ); // request headers

答案 1 :(得分:67)

您可以通过以下方式查看有关转移的信息:

curl_setopt($curl_exect, CURLINFO_HEADER_OUT, true);

在请求之前,

$information = curl_getinfo($curl_exect);
请求后

  

查看:http://www.php.net/manual/en/function.curl-getinfo.php

您还可以使用CURLOPT_HEADER

中的curl_setopt
curl_setopt($curl_exect, CURLOPT_HEADER, true);

$httpcode = curl_getinfo($c, CURLINFO_HTTP_CODE);

if($httpcode == 200) {
    return true;
}

return false;

这些只是使用标题的一些方法。

答案 2 :(得分:9)

您可以使用以下命令将curl发送的所有标题保存到文件中:

$f = fopen('request.txt', 'w');
curl_setopt($ch,CURLOPT_VERBOSE,true);
curl_setopt($ch,CURLOPT_STDERR ,$f);

答案 3 :(得分:6)

您可以使用以下方式让自己请求标题:

// open a socket connection on port 80
$fp = fsockopen($host, 80);

// send the request headers:
fputs($fp, "POST $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Referer: $referer\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ". strlen($data) ."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data);

$result = ''; 
while(!feof($fp)) {
    // receive the results of the request
    $result .= fgets($fp, 128);
}

// close the socket connection:
fclose($fp);

喜欢写在how make request

答案 4 :(得分:3)

我最近遇到了完全相同的问题,我安装了Wireshark(它是一个网络监控工具)。除加密流量(HTTPS)外,您可以使用此功能查看所有内容。