curl_easy_getinfo() 函数原型声明如下:
#include <curl/curl.h> CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ... );
https://curl.se/libcurl/c/curl_easy_getinfo.html
使用该函数可以在请求curl 会话中的相关信息。
注意,第 3 个参数必须是一个 long 型,或char型,或curl_slist型,或是double型的指针。
函数所请求信息只有在函数返回 CURLE_OK 时才会被有效填充,该函数一般用在 perform 函数(如 curl_easy_perform() )之后。
CURL *curl = curl_easy_init(); if(curl) { CURLcode res; curl_easy_setopt(curl, CURLOPT_URL, "https://example.com"); res = curl_easy_perform(curl); if(res == CURLE_OK) { long response_code; curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code); } curl_easy_cleanup(curl); }
-
info这个参数可能是以下常量之一:
CURLINFO_EFFECTIVE_URL
- 最后一个有效的URL地址CURLINFO_HTTP_CODE
- 最后一个收到的HTTP代码- CURLINFO_RESPONSE_CODE 上次收到的响应代码
CURLINFO_FILETIME
- 远程获取文档的时间,如果无法获取,则返回值为“-1”CURLINFO_TOTAL_TIME
- 最后一次传输所消耗的时间CURLINFO_NAMELOOKUP_TIME
- 名称解析所消耗的时间CURLINFO_CONNECT_TIME
- 建立连接所消耗的时间CURLINFO_PRETRANSFER_TIME
- 从建立连接到准备传输所使用的时间CURLINFO_STARTTRANSFER_TIME
- 从建立连接到传输开始所使用的时间CURLINFO_REDIRECT_TIME
- 在事务传输开始前重定向所使用的时间CURLINFO_SIZE_UPLOAD
- 以字节为单位返回上传数据量的总值CURLINFO_SIZE_DOWNLOAD
- 以字节为单位返回下载数据量的总值CURLINFO_SPEED_DOWNLOAD
- 平均下载速度CURLINFO_SPEED_UPLOAD
- 平均上传速度CURLINFO_HEADER_SIZE
- header部分的大小CURLINFO_HEADER_OUT
- 发送请求的字符串CURLINFO_REQUEST_SIZE
- 在HTTP请求中有问题的请求的大小CURLINFO_SSL_VERIFYRESULT
- 通过设置CURLOPT_SSL_VERIFYPEER
返回的SSL证书验证请求的结果CURLINFO_CONTENT_LENGTH_DOWNLOAD
- 从Content-Length: field中读取的下载内容长度CURLINFO_CONTENT_LENGTH_UPLOAD
- 上传内容大小的说明CURLINFO_CONTENT_TYPE
- 下载内容的Content-Type:值,NULL表示服务器没有发送有效的Content-Type:header