为了账号安全,请及时绑定邮箱和手机立即绑定

PHP-调试Curl

PHP-调试Curl

PHP
白衣染霜花 2019-06-11 13:02:29
PHP-调试Curl在发送之前,我想看看请求中的POST字段是什么。(用于调试)。我正在使用的PHP库(类)已经创建(不是由我创建),所以我试图理解它。据我所知,它使用curl_setopt()设置不同的选项(如头和诸如此类),然后使用curl_exec()发送请求。关于如何查看哪些帖子字段被发送的想法?
查看完整描述

3 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

您可以启用CURLOPT_VERBOSE备选方案:

curl_setopt($curlhandle, CURLOPT_VERBOSE, true);

什么时候CURLOPT_VERBOSE,则将输出写入STDERR或使用CURLOPT_STDERR..输出内容非常丰富。

您还可以使用tcpdump或wireshark监视网络流量。


查看完整回答
反对 回复 2019-06-11
?
青春有我

TA贡献1784条经验 获得超8个赞

您可以启用CURLOPT_VERBOSE选项并将该信息记录到(临时)CURLOPT_STDERR:

// CURLOPT_VERBOSE: TRUE to output verbose information. Writes output to STDERR, 
// or the file specified using CURLOPT_STDERR.curl_setopt($handle, CURLOPT_VERBOSE, true);
$verbose = fopen('php://temp', 'w+');curl_setopt($handle, CURLOPT_STDERR, $verbose);

然后,您可以在curl完成请求后读取它:

$result = curl_exec($handle);if ($result === FALSE) {
    printf("cUrl error (#%d): %s<br>\n", curl_errno($handle),
           htmlspecialchars(curl_error($handle)));}rewind($verbose);$verboseLog = stream_get_contents($verbose);echo "Verbose information:
           \n<pre>", htmlspecialchars($verboseLog), "</pre>\n";

(我最初回答相似,但范围更广在一个相关的问题中)

有关上一次请求的指标等更多信息可通过curl_getinfo..此信息对于调试curl请求也很有用。作为一个用法示例,我通常会将其包装成一个函数:

$version = curl_version();

extract(curl_getinfo($handle));

$metrics = <<<EOD

URL....: $url

Code...: $http_code ($redirect_count redirect(s) in $redirect_time secs)

Content: $content_type Size: $download_content_length (Own: $size_download) Filetime: $filetime

Time...: $total_time Start @ $starttransfer_time (DNS: $namelookup_time Connect: $connect_time Request: $pretransfer_time)

Speed..: Down: $speed_download (avg.) Up: $speed_upload (avg.)

Curl...: v{$version['version']}

EOD;


查看完整回答
反对 回复 2019-06-11
  • 3 回答
  • 0 关注
  • 994 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信