libcurl API 常用函数

libcurl 是一个用于传输数据的库,提供了多种函数来获取HTTP、FTP等协议的响应信息。`curl_easy_perform()` 函数用于执行传输,返回响应代码。通过 `curl_easy_getinfo()` 获取HTTP响应代码、URL等信息。libcurl 支持设置选项来改变其行为,如设置自定义HTTP头、POST数据等。使用时应注意,同一句柄不应在并行传输中使用,且在使用后需正确释放资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

libcurl

详参libcurl

1 curl_easy_getinfo

CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ... );

使用此函数从curl会话请求内部信息。第三个参数必须是指向long的指针、指向char*的指针、指向struct curl_slist*的指针或指向double的指针(本文档将进一步介绍)。指向的数据将相应地填充,并且仅当函数返回CURLE_OK时才可以依赖。如果要获取传输相关数据,请在执行传输后使用此函数。
除非下面明确提到,否则不应释放此函数返回的内存。

  1. CURLINFO_EFFECTIVE_URL
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_EFFECTIVE_URL, char **urlp);

传入指向字符指针的指针,并获取上次使用的有效URL。
在要求libcurl遵循重定向的情况下,它很可能与使用CURLOPT_URL设置的值不同。
urlp指针将为空或指向您不能释放的私有内存-当您对相应的curl句柄调用curl_easy_cleanup时,它将被释放。
2. CURLINFO_RESPONSE_CODE

CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RESPONSE_CODE, long *codep);

将指针传递给long以接收上次接收的HTTP、FTP或SMTP响应代码。这个选项以前在libcurl 7.10.7和更早版本中被称为CURLINFO_HTTP_代码。如果未收到服务器响应代码,则存储的值将为零。请注意,应该使用CURLINFO_HTTP_CONNECTCODE读取代理的连接响应,而不是这个。
支持7.25.0中添加的SMTP响应。
示例:

CURL *curl = curl_easy_init();
if(curl) {
  CURLcode res;
  curl_easy_setopt(curl, CURLOPT_URL, "http://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);
}
  1. CURLINFO_CONTENT_TYPE
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_TYPE, char **ct);

传递指向char指针的指针以接收下载对象的内容类型。
这是从Content Type:字段读取的值。如果获得空值,则意味着服务器未发送有效的内容类型头,或者使用的协议不支持此操作。
ct指针将是空的,或者指向私有内存—您不能释放它—当您对相应的curl句柄调用curl_easy_cleanup时,它将被释放。

curl_easy_perform

CURLcode curl_easy_perform(CURL *easy_handle);
curl_easy_init和所有curl_easy_setopt调用之后调用此函数,并将执行选项中描述的传输。它必须使用与返回的curl_easy_init调用相同的easy_句柄作为输入来调用。
curl_easy_perform以阻塞的方式执行整个请求,并在完成或失败时返回。有关非阻塞行为,请参见curl_multi_perform
您可以使用相同的easy_句柄执行任意数量的curl_easy_调用。如果您打算传送多个文件,我们甚至鼓励您这样做。然后,libcurl将尝试在以下传输中重新使用相同的连接,从而使操作更快、占用更少的CPU和使用更少的网络资源。请注意,您必须在调用之间使用curl_easy_setopt来设置以下curl_easy_perform的选项。
决不能使用同一个简单句柄从两个位置同时调用此函数。让函数在另一次调用之前先返回。如果要并行传输,必须使用多个curl easy_句柄。
easy_handle被添加到多句柄时,curl_easy_perform不能使用它。

curl_easy_setopt

CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);

curl_easy_setop

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值